Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2009, 13:01   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию Замечания к структуре БД

Товарищи, сегодня показывал преподавателю свою курсовую, а именно структуру БД. Посмотрите и выскажите свои мнения, замечания . Что в ней не так?
Изображения
Тип файла: jpg Структура.jpg (59.4 Кб, 160 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 30.04.2009 в 13:03.
artemavd вне форума Ответить с цитированием
Старый 30.04.2009, 13:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А что ты хочешь узнать? Выглядит комфортно. если так же работает, то ставь себе 5+ и не парься.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.04.2009, 14:08   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Stilet, результат работы - это заполненные четыре таблицы DBGrid и таблица отображения содержимого БД. Есть ли в моей структуре дублирование информации?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 30.04.2009, 14:46   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

имхо чота там в табл. Предмет (где айди, год, предмет) дублируется инфа
по идее это как минимум 2, а то и 3 таблички
справочник предметов, справочник по годам, таблица связки предметов и годов

З.Ы.: т.е. на примере языка - пусть будет Английский, его преподают во 2м, 3м и 4м семестрах (кстати, а у вас семестровость не учитывается) - итого будет 2 записи (если нужны только годы преподавания), 3 записи (по семестрам)
З.Ы.2: а справочник по годам тогда лучше завести - даст возможность расширять периодичность преподавания предметов - взял институт и перешел на помесячное преподавание: месяц только английский, месяц только вышка, месяц - начерталка.

Последний раз редактировалось soleil@mmc; 30.04.2009 в 15:00.
soleil@mmc вне форума Ответить с цитированием
Старый 30.04.2009, 15:15   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
soleil@mmc
Спасибо за замечание То есть мне надо бы последнюю таблцу Предмет разбить еще на две отдельные? Какие поля тогда в ней можно сделать? (из тех полей, что у меня есть в других таблица)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 30.04.2009, 15:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Есть ли в моей структуре дублирование информации?
А такие вещи не в интерфейсе смотрятся, а в самой структуре БД.
В интерфейсе иногда дублирование информации даже необходимо, а вот в БД этого при таком раскладе быть не может.

В БД нужно смотреть, в реляции и пр...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.04.2009, 15:30   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ниже приведены скрипты для Оракла (для своего вариант подправьте по необходимости - все айдишники справочников автоинкрементные, в связочной табл. - форейнкейные; типы полей)

справочник предметов
Код:
create table subjects
   (	subject_id number not null, 
	subject_name varchar2(250), 
	 constraint pk_subjects primary key (subjects_id) using index enable);
справочник по годам
Код:
create table periods
   (	period_id number not null, 
	beg_period date, 
           end_period date, 
	 constraint pk_periods primary key (period_id) using index enable);
таблица связки предметов и годов
Код:
create table period_subject
   (	period_id number not null, 
	subject_id number not null, 
	 constraint pk_period_subject primary key (period_id, subject_id) using index enable,
            constraint fk_period_subject_subjects foreign key (subject_id)
	  references subjects (subject_id) enable,
            constraint fk_period_subject_periods foreign key (period_id)
	  references subjects (period_id) enable
       );
З.Ы.: для табл. period_subject можно еще ввести айдишник уникальной строки и тогда по этому полю делать праймари, а по тем что сейчас в праймари (period_id, subject_id) делать только уникальный индекс

Последний раз редактировалось soleil@mmc; 30.04.2009 в 15:33.
soleil@mmc вне форума Ответить с цитированием
Старый 30.04.2009, 16:17   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Stilet, во вложении выглядят мои заполненные некоторыми строчками таблицы. Что можете сказать?
soleil@mmc, а куда мне прописать эти коды? И зачем?
Изображения
Тип файла: jpg Безымянный2.jpg (38.2 Кб, 142 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 30.04.2009 в 16:26.
artemavd вне форума Ответить с цитированием
Старый 30.04.2009, 16:42   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
soleil@mmc, а куда мне прописать эти коды? И зачем?
ну вот твоя картинка с табличками в парадоксе (кстати, разительно отличается от твоей первой картинки - я считал, что ты в первой картинке отразил все основные таблицы, кроме верхней агрегатной)
не пою - поддерживается ли там ссылочная целостность, но суть такая:

во-первых, твоя таблица table_outher содержит наименование предмета и для полного счастья тебе нужно указывать не наименование предмета, а его айдишник из таблицы table_predmety (как это сделано в табл. table_critery, но только вот зачем там айдишник имеет тип флоат нипанятна)
во-вторых, у тебя будут записи по периодам 1я четверть 2009 будет указываться столько раз сколько предметов - стоит инфу о периодах вынести в отдельную таблицу и тогда твоя таблица table_outher станет похожа на это
id, id_period, id_predmet, где

id_period - это ссылка на табл. table_periody (period_id, period_year, period_quartal)

З.Ы.: почитай про "нормальные формы" и будет тебе щастье
soleil@mmc вне форума Ответить с цитированием
Старый 30.04.2009, 17:43   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
З.Ы.: почитай про "нормальные формы" и будет тебе щастье
Я читал про эти нормальные формы .
Цитата:
ну вот твоя картинка с табличками в парадоксе (кстати, разительно отличается от твоей первой картинки - я считал, что ты в первой картинке отразил все основные таблицы, кроме верхней агрегатной)
Так верхняя таблица (StringGrid) и объединяет все таблицы.
Цитата:
твоя таблица table_outher содержит наименование предмета и для полного счастья тебе нужно указывать не наименование предмета, а его айдишник из таблицы table_predmety
А название будет браться из БД table_predmety?
soleil@mmc, а Вы бы не могли также в Database Desktop сделать только таблицы и отправить скриншот?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 30.04.2009 в 17:45.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура и пример по структуре БД artemavd БД в Delphi 1 09.04.2009 13:17
Динамический массив в структуре Ch00kan0ff Общие вопросы C/C++ 0 07.04.2009 15:46
Вопрос по структуре IP-адреса Айвенго Помощь студентам 2 10.11.2008 20:03
ОШИБКА в структуре Panterka Помощь студентам 7 19.12.2007 09:24