|
|
|
Иерархические структуры
|
|||
|---|---|---|---|
|
#18+
Приветствую всех. Есть идейка, интересно было бы послушать Ваше мнение. Понимаю, что тема избитая, но ... хотелось бы подстраховаться, чтобы потом не было мучительно больно :) Примерная реализация такова: 1. Реестр объектов: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Вопрос 1: Хороша ли такая архитектура? Вопрос 2: хорошо ли совмещать PK с FK? Не ожидаются ли какие-нибудь неожиданные грабли? И еще, чем чреват другой вариант, если не задать PK, а задать FK на столбец A.object_id с ограничением UNIQUE? В качестве SQL сервера рассматриваются два варианта: MSSQL2005 и Firebird 2.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 14:11 |
|
||
|
Иерархические структуры
|
|||
|---|---|---|---|
|
#18+
а зачем это делить на две таблицы? у вас предполагается отличное от единицы количество детализаций на один объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 14:24 |
|
||
|
Иерархические структуры
|
|||
|---|---|---|---|
|
#18+
miksoftа зачем это делить на две таблицы? у вас предполагается отличное от единицы количество детализаций на один объект? Нет, но количество типов объектов достаточно большое число (порядка 20). На каждый тип объекта отдельная таблица детализации. Самое главное я, пожалй, пропустил. БД описывает структуру электрической сети, которая разнородна. Таблица реестра объектов нужна для соединения объектов (через таблицу линков). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 14:30 |
|
||
|
Иерархические структуры
|
|||
|---|---|---|---|
|
#18+
Senya_LНет, но количество типов объектов достаточно большое число (порядка 20).Насколько фиксировано это число? как часто будет изменяться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 15:04 |
|
||
|
Иерархические структуры
|
|||
|---|---|---|---|
|
#18+
miksoft Senya_LНет, но количество типов объектов достаточно большое число (порядка 20).Насколько фиксировано это число? как часто будет изменяться? Судя по тому, что в последнее время глубина детализации все время возрастает по требованию заказчика, то ответ - раз в 2-3 месяца (за последние 6 месяцев добавлены 3 новых типа объекта, 2 - мною лично). Сейчас все это крутится на совсем другой архитектуре, стоит вопрос о ее смене. Сейчас стадия проектирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 15:08 |
|
||
|
Иерархические структуры
|
|||
|---|---|---|---|
|
#18+
Senya_LВопрос 2: хорошо ли совмещать PK с FK? Не ожидаются ли какие-нибудь неожиданные грабли?Что в Вашем понимании совмещать ? Как PK, так и FK описывают ограничения на хранимые данные. Каждое из них имеет совершенно разный и независимый смысл, никоим образом не дублируя друг друга. Поэтому их существование определяется только вами: хотите ли вы доверить проверку этих ограничений СУБД или будете проверять их каким-либо другим способом. Или вообще не будете проверять и решите, что пользователь имеет право на любую ошибку. Правда, есть риск, что в случае инцидентов разгребать последствия придется вам, или, что гораздо хуже, тем, кто будет после вас сопровождать такую систему. В большинстве случаев такие ограничения лучше объявлять явно, иначе будет риск нарушить целостность данных совершенно случайным и непредсказумым образом. Senya_Lчем чреват другой вариант, если не задать PK, а задать FK на столбец A.object_id с ограничением UNIQUE? В качестве SQL сервера рассматриваются два варианта: MSSQL2005 и Firebird 2.1Почти ничем, за маленьким исключением, ограничения UNIQUE позволяют существование NULL в тех столбцах, на которые наложены. Поэтому если такое значение не является допустимым для данных в этих столбцах, то лучше, IMHO, использовать PRIMARY KEY, чтобы потом, опять же не удивляться и не исправлять ошибки в данных. Если же на соотвествующие столбцы наложить ограничение типа CHECK (Field IS NOT NULL), то UNIQUE по поведению становится практически полным аналогом PK. В MS SQL можно устанавливать FOREIGN KEY не только на PK, но и UNIQUE. Предполагаю, что Firebird в этом смысле вряд ли отличается от MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 18:04 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=100&tid=1543742]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 368ms |

| 0 / 0 |
