Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/17: Рейтинг темы: голосов - 17, средняя оценка - 4.65
androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 771
#1

Как правильно связать 2 таблицы

02.04.2012, 22:26. Просмотров 3068. Ответов 6
Метки нет (Все метки)

К примеру:
TABLE USER: ID_USER, NAME, AGE
TABLE INFORMATION: ID_INFO, ID_USER
Вот, и связать по ID_USER

Или же:
TABLE USER: ID_USER, NAME, AGE, ID_INFO
TABLE INFORMATION: ID_INFO
И связать так же по ID_USER, но в TABLE USER будет ключ информации.

Можно ли использовать первый вариант? И если можно, то поясните разницу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 22:26
Ответы с готовыми решениями:

Правильно связать таблицы
Добрый день. Есть такая структура: Везде связи 1 ко многим. В...

Правильно связать таблицы
Делаю БД стоматологии. Таблицы: 1. Пациенты(code, name, surname) - code -...

Как связать таблицы?
Добрый день, сразу прошу прощения за банальность вопроса, но впервые вожусь с...

Как связать две таблицы
База состоит из двух таблиц Department --- id (int primary key) --- name...

Как связать две таблицы?
подскажите, пожалуйста, как связать две таблицы в ms sql отношением

6
_katon_
380 / 237 / 18
Регистрация: 03.10.2011
Сообщений: 965
02.04.2012, 22:33 #2
Все зависит от чего что зависит (во тавтология ну да ладно)!
Вообще я понимаю для чего нужна таблица User, но вот для чего нужна таблица information понять сложно. кроме того зачем нужна таблица состоящая из одного атрибута - ID. Поясните пожалуйста, зачем нужна таблица information!
0
androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 771
02.04.2012, 22:37  [ТС] #3
Я взял таблицу для примера. Ок, давайте тада возьмем table История_болезни в качестве второй. Поясните?
0
_katon_
380 / 237 / 18
Регистрация: 03.10.2011
Сообщений: 965
02.04.2012, 23:01 #4
Неа не надо! С медицинской тематикой с большего знаком)).

Таблица должна содержать атрибуты которые зависят только от первичного ключа. Рассмотрим таблицу Users в ней должны хранится атрибуты относящиеся к сущности именно User-а и ничего больше. Перечислим атрибуты сущности (ну так на вскидку): пол, рост, вес, ФИО (ИМХО можно разбить на три поля), возраст и т.д. т.е. атрибуты должны быть признаком записи.
Теперь рассмотрим Историю болезни! Можно ли ее считать атрибутом Users? думаю, что в определенном контексте можно (допустим если user-у соответствует тока одна история болезни всю жизнь и она является неотделимой его честью с точки зрения рассмотрения медицины).
Лично я давно понял что при построение структуры данных все условно и ваше решение скорее всего не совпадет с решениями др. программистов из-за особенностей вашего мировоззрения.

Поэтому при построении структуры надо ориентироваться на тот факт, что понять ее должно как можно больше людей ориентируясь просто на здравый смысл (целая философия получилась)) ).

Вернемся к нашим таблицам.
Лично я бы добавил ссылку на user-а в таблицу "История болезни" по той простой причине, что считаю код человека (доктора, дату создания, дату последней записи и т.д) для которого она писана очень важным признаком этой сущности без которой она в принципе не имеет даже права на существование. Лично мне кажется, что такой подход будет понятен большинству людей.
0
androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 771
02.04.2012, 23:11  [ТС] #5
Насколко я понял, то Вы предложили 1-ый вариант. Ок. По поводу мировоззрения интересно, впервые слушу про себя такое. Да я скорее просто учусь, пытаюсь понять для себя основные моменты )) Вот нашел здесь на форуме похожий пример (картинка), там наоборот 2-ой вариант. Считаете данная схема не совсем верна?
0
_katon_
380 / 237 / 18
Регистрация: 03.10.2011
Сообщений: 965
02.04.2012, 23:35 #6
Нет! Я наоборот подчеркиваю, что можно рассматривать два варианта, но выбирать тот который будет считаться наиболее понятным и приемлемы. Для меня более понятен тот вариант который предложил я. А про мировоззрение это относится вообще ко всем людям)).
Могу лишь привести д.п. доводы
User может иметь несколько историй болезни. Тогда поместить ссылку в таблицу users ну никак не получится. Кроме это я считаю, что история болезни каждого отедльного человека уникальна и не может быть поставлена в соотвествие группе людей (только одному). Вот мои доводы или если будет угодно логика, по которой я выстраиваю связи.

Кстати, для справки, я видел решения, по которым разработчики, чтобы не парить свой мозг, делали так называемые развязанные таблицы. Если подробнее, то они добавляли третью таблицу в которой содержалась ссылка как на запись в первой таблице так и во второй. Этот подход обладает одним существенным достоинством, что человек, который использует эту связку таблиц может вертеть ей как хочет. Надо одному человеку поставить в соответствие много историй болезней? Да вот пожалуйста! Надо наоборот? Вот держите!
1
androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 771
02.04.2012, 23:51  [ТС] #7
Ok, спасибо
0
02.04.2012, 23:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 23:51

Как связать таблицы через sql запрос
Добрый день, имеется, к примеру, такие таблицы со связью:...

Как связать таблицы из двух баз данных
db1 : Films -ID INT -Name VARCHAR -Genre INT db2 : Genres

Как связать таблицы в базе данных "Школа"
Здравствуйте! Делаю базу данных "Школа" и у меня есть 6 таблиц: ученики,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru