![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 25.11.2012
Сообщений: 2
|
![]()
Доброе время суток, товарищи.
У меня проблемка такого плана: есть таблица Flight(Рейсы) CREATE TABLE [dbo].[Flight] ( [id_flight] [smallint] IDENTITY (1, 1) NOT NULL , [name_flight] [char] (20) COLLATE Cyrillic_General_CI_AS NULL , [date_flight] [datetime] NULL , [log_user] [tinyint] NULL , [log_date] [datetime] NULL , [otkuda] [tinyint] NULL , [kuda] [tinyint] NULL ) ON [PRIMARY] таблица Punkt CREATE TABLE [dbo].[Punkt] ( [id_punkt] [smallint] IDENTITY (1, 1) NOT NULL , [name_punkt] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ) ON [PRIMARY] таблица Spisok CREATE TABLE [dbo].[Spisok] ( [id_spisok] [smallint] NULL , [id_post] [smallint] NULL , [id_fligth] [smallint] NULL ) ON [PRIMARY] В таблице Flight поля otkuda и kuda внешние ключи к Punkt.id_punkt. Наверное это неправильно что в одной таблице 2 внешних ключа относятся к одному и томуже полю.. Вопрос: как правильно нормализоровать таблицу Flight? Не хочется раздувать БД вводя 2 таблицы: Punkt_ot с id и name_punkt_ot и Punkt_do с id и name_punkt_do. Но другово решения не вижу, может кто подскажет дельный совет.... |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 01.10.2008
Сообщений: 248
|
![]()
вполне нормальная ситуация имхо
Контакты
skype, почта: bm@kwax.ru |
![]() |
![]() |
![]() |
#3 | |
Новичок
Джуниор
Регистрация: 25.11.2012
Сообщений: 2
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Сами шаблоны таблиц ничего не говорят практически, будь они сто раз оптимальны, но если запросы к этим таблицам дают огромную нагрузку - считай задание провалено.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 19.04.2012
Сообщений: 3
|
![]()
есть таблица
учреждение(дата прийома, Фио_врача,специальность, Фио_пациента, №кабинета, адрес_пациента, страховой полис, диагноз, препарат, побочный эффект) надо довести это все до 3-й НФ у мну такое вышло врач(id_врача, фио, специальность, статус) пациент(id_пациента, адрес, фамилия, страховой полис) препарат(код_препарата, название, побочные_эфекты) Лечение(id_врача,id_пациента, дата_прийома, номер кабинета) все бы ничего, на если челу несколько препаратов врач назначит, как быть, ведь в полях должны только атомарные быть значения, а таковым оно будет только если 1 препарат назначит, помогите плз, всю голову сломал |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 27.12.2011
Сообщений: 86
|
![]()
2 anitalp, не увидел, чтобы где либо в лечении прописывался ID препарата.
Расширь базу следующей табличкой medicaments2therapy (Медикаменты_для_лечения) id_лечения id_препарата количество (если нужно). И получится связь многие ко многим, т.к. во многих лечениях может использоваться препарат и наборот, в одном лечении может использоваться множество препаратов. P.S. дата_приЁма, а то аж глаза выжигает. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
например
в таблицу Лечение добавляете id_Лечение (кстати, я бы рекомендовал ВСЕГДА иметь в таблице первичный ключ, желательно простой (отдельный). добавляете таблицу НазначеныйПрепарат (id_Назначения, id_Лечения, id_Препарата, дозировка, количество_дней_приёма) в этой таблице будет столько записей, сколько препаратов назначил врач в результате приёма пациента.. профит. UPDATE я прозевал пост от Dexes, иначе свой (по сути о том же самом!), не стал бы уже писать... |
![]() |
![]() |
![]() |
#8 |
Регистрация: 19.04.2012
Сообщений: 3
|
![]()
спасибо, а что можно сделать с аномалией удаления, ведь если удалю врача, сним удалится все строки, что с ним связано, так ведь не должно быть?
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Это не аномалия, а естественный порядок вещей для базы. Т.е. нельзя удалить врача, не удалив соответствующие записи из таблицы Лечение. В принципе некоторые СУБД допускают NULL в id_врача таблицы Лечение, но информация о лечащем враче при этом все равно потеряется. Если врач уволился, то в его записи в каком-то поле можно этот факт зафиксировать для запрета дальнейшего использования записи.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 19.04.2012
Сообщений: 3
|
![]()
Аватар в мс аксесе есть варианты для запрета удаления соответствующих записей?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сравнить 2 таблицы? | Jacki | Microsoft Office Excel | 8 | 08.03.2011 20:33 |
Как сделать чтобы одна ячейка таблицы содержала такой же текст как другая? | 3мей | Microsoft Office Word | 2 | 15.01.2011 22:55 |
Как обновить столбец одной таблицы из другой таблицы | kairat_tuyakbaev | Microsoft Office Access | 2 | 24.09.2010 12:46 |
Как обновить столбец одной таблицы из другой таблицы | kairat_tuyakbaev | SQL, базы данных | 0 | 23.09.2010 23:42 |
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD | prikolist | Microsoft Office Word | 6 | 21.11.2008 13:17 |