Mysql
 sql >> база данни >  >> RDS >> Mysql

DB дизайн:таблица с членове отделно или всичко в една таблица?

Много зависи от това какви са тези "други" детайли. Това е често срещан и интересен въпрос и на пръв поглед няма „твърд и бърз“ отговор. Но ако разгледаме въпроса по-абстрактно, за действителната връзка между атрибутите („подробности“) на всяко конкретно нещо, което искате да представите, може да намерим известна яснота.

Във вашия въпрос заявявате, че приятелите имат „минимални“ и „други“ подробности. Вместо да класифицираме тези детайли като "минимални" или "други", нека ги класифицираме според това дали всеки индивидуален ("атомен") детайл може да бъде напълно определен от това, което прави приятел уникален.

Предполагам, че има някакъв първичен ключ (PK), като FriendID или имейл адрес или нещо подобно. Имайки предвид този уникален идентификатор, запитайте се:„Ако ми бъде даден точно един FriendID (или имейл или каквото и да е, което използвате като PK), в какви подробности за този приятел съм абсолютно сигурен? Например, като се има предвид FriendID=2112, аз абсолютно знам собственото име, фамилията и датата на раждане на този приятел, но аз не абсолютно знам телефонния номер на този приятел, защото има повече от един.

Групирайте заедно в една таблица всички подробности, които недвусмислено знаете, като се има предвид PK. Поставете подробностите, за които имате нужда от повече данни (като "дом" или "работа" в случай на телефонни номера) в "детски" таблици, с външен ключ обратно към таблицата "родител" на ПК. (Забележка:Изключително вероятно е PK на дъщерната таблица да бъде съставен; тоест съставен от PK на родителската таблица и диференциращия фактор (като "дом" или "работа" в този пример). Съставни ключове за много страни на 1-M отношенията са много добри.)

Отрепките на базата данни наричат ​​това разлагане въз основа на функционални зависимости .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. променете състоянието на планировчика на събития в mysql

  2. MySQL Server е изчезнал при импортиране на голям sql файл

  3. връщане на празни редове за несъществуващи данни

  4. SQl актуализация от таблица с произволни имена

  5. Как да изчислим степента на реализация в MySQL?