Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / помогите спроектироват file union / 7 сообщений из 7, страница 1 из 1
01.10.2007, 12:17
    #34837992
p.o.d.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
есть таблица фаилов и нужно сделать "объеденение фаилов" (union), допустим
фаилы индексом 1,4,10,15,123 принадлежит объеденению 1 а фаилы индексом 2,22,53,42,123 объеденению 2.
уникальность таблици fileUnion определяетца fileId + fileUnion уникальная запись ихняя комбинациа должна быть. где fileId возьмыётса из таблици фаилов.
и в чём проблема: во первых не могу сделать fileId foreign key и во вторых
не могу сделать следуюшую запись в fileUnion
unionId fileId
1 1
1 4
1 10
1 15
1 123
2 2
2 22
2 53
2 42
2 123
отказываетса создавать один и одинаковые unionId.
а надо чтоб не было проблемы если я захочу добавить новы фаил в union номер 1.
например:
Код: plaintext
INSERT INTO fileUnion(unionId,fileId) VALUES( 1 , 124 )
или при
Код: plaintext
INSERT INTO fileUnion(fileId) VALUES( 524 )
пусть создаётса новый Union.
...
Рейтинг: 0 / 0
01.10.2007, 15:47
    #34838742
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
В таблице FileUnion нарушается какая-то из нормальных форм, то ли 3НФ, то ли НФБК, не помню уже. Грубо говоря, вы смешиваете понятие "объединение" со служебной many-to-many развязкой.

Вынесите список объединений в отдельную таблицу Unions, и от таблицы FileUnion бросьте на обе оставшиеся по внешнему ключу. Собственно, все - остальное само подхватится.
...
Рейтинг: 0 / 0
01.10.2007, 16:27
    #34838864
p.o.d.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
ага, понятно, спасибо за совет

за одно и спрошу:
в sql server-е вообше не возможно сделать похожую вешь?
потому что когда я работал на MySql там я всю свою структуры баз строил на подобных навыках.
что уникальность определяетса несколькими полями.

допустим саит многоязычны
и новости надо на разных языках выводить, есть новость "А" на руссом,англиском и французком языке.
значит я не смогу сделать запись в таблице новостеи:
Код: plaintext
1.
2.
3.
4.
newId languageId title description 
   1         1        asd     asd 
   1         2        qwe     qwe 
   1         3        zxc     zxc 
...
Рейтинг: 0 / 0
01.10.2007, 17:30
    #34839021
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
p.o.d.в sql server-е вообше не возможно сделать похожую вешь?
потому что когда я работал на MySql там я всю свою структуры баз строил на подобных навыках.
что уникальность определяетса несколькими полями.Возможно, конечно.
...
Рейтинг: 0 / 0
01.10.2007, 17:43
    #34839057
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
p.o.d.значит я не смогу сделать запись в таблице новостеи:
Код: plaintext
1.
2.
3.
4.
newId languageId title description 
   1         1        asd     asd 
   1         2        qwe     qwe 
   1         3        zxc     zxc 
Я думаю, сейчас очень сложно будет найти хоть сколько-нибудь распространенную СУБД, которая бы не позволяла делать составные первичные ключи (ну или составные уникальные ограничения, в общем случае).

Разумеется, MS SQL Server все это позволяет. Собственно, в таблице FileUnion у вас первичный ключ именно таким и получается - из двух полей.
...
Рейтинг: 0 / 0
01.10.2007, 18:49
    #34839233
p.o.d.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
Ennor Tiegael p.o.d.значит я не смогу сделать запись в таблице новостеи:
Код: plaintext
1.
2.
3.
4.
newId languageId title description 
   1         1        asd     asd 
   1         2        qwe     qwe 
   1         3        zxc     zxc 
Я думаю, сейчас очень сложно будет найти хоть сколько-нибудь распространенную СУБД, которая бы не позволяла делать составные первичные ключи (ну или составные уникальные ограничения, в общем случае).

Разумеется, MS SQL Server все это позволяет. Собственно, в таблице FileUnion у вас первичный ключ именно таким и получается - из двух полей.

я знаю что он таким получаитса, в том и первоя проблема что я не могу сделать FK fileId из таблици фаилов. вот какая картина рисуетса. рис1

и невозможно сделать так чтобы unionId был autoincrement при:
Код: plaintext
INSERT INTO fileUnion(fileId) VALUES( 5 )
и добовлял фаил к 5 - ому union - у при:
Код: plaintext
INSERT INTO fileUnion(unionId,fileId) VALUES( 5 , 5 )
...
Рейтинг: 0 / 0
02.10.2007, 02:47
    #34839693
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектироват file union
До того, как браться проектировать базу, неплохо было бы изучить предметную область.

В данном случае многое зависит от того, может один файл содержаться в нескольких разных объединениях, или нет. Если не может, то структура получается почти как ваша, только вот направление внешних ключей будет противоположным (верхняя схема). Если же может, то используйте нижний вариант.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / помогите спроектироват file union / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]