Скажем, у меня есть вещи Альфы, которые могут быть или не быть или быть связаны с вещами Браво или Чарли.
Это взаимно-однозначные отношения: никакой альфа не будет относиться к нескольким Браво. И ни один Браво не будет относиться к более чем одной Альфе.
У меня есть несколько целей:
- система, которая легко учится и поддерживать.
- целостность данных, установленная в моей базы данных.
- схема, соответствующая реальная логическая организация мои данные.
- классы/объекты в моей программирования, которые хорошо таблицы базы данных (à la Linq to SQL)
- быстрые операции чтения и записи
- эффективное использование пространства (несколько пустых полей)
У меня есть три идеи и hellip;
PK = primary key
FK = foreign key
NU = nullable
Одна таблица со многими полями nullalbe (плоский файл) & hellip;
Alphas
--------
PK AlphaId
AlphaOne
AlphaTwo
AlphaThree
NU BravoOne
NU BravoTwo
NU BravoThree
NU CharlieOne
NU CharlieTwo
NU CharlieThree
Многие таблицы с нулевыми полями nullalbe & hellip;
Alphas
--------
PK AlphaId
AlphaOne
AlphaTwo
AlphaThree
Bravos
--------
FK PK AlphaId
BravoOne
BravoTwo
BravoThree
Charlies
--------
FK PK AlphaId
CharlieOne
CharlieTwo
CharlieThree
Лучшее (или худшее) для обоих: множество внешних ключей nullalbe для многих таблиц & hellip;
Alphas
--------
PK AlphaId
AlphaOne
AlphaTwo
AlphaThree
NU FK BravoId
NU FK CharlieId
Bravos
--------
PK BravoId
BravoOne
BravoTwo
BravoThree
Charlies
--------
PK CharlieId
CharlieOne
CharlieTwo
CharlieThree
Что, если альфа должна быть либо Браво, либо Чарли, но не оба?
Что, если вместо просто Бравоса и Чарли Альфа может быть любой из Дельтов, Эхо, Фоксстротов или Гольфов и т.д. & hellip;?
EDIT: Это часть вопроса: Какая лучшая схема базы данных для моей навигации?