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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2010, 21:22   #11
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Итак представляю свою структуру

Смотрим и говорим что не так. Вроде все нормально
Код:
## таблица руководители
CREATE TABLE IF NOT EXISTS t_Director
(
	ID UNSIGNED INT NOT NULL AUTO_INCREMENT,
	Name CHAR(30) NOT NULL, # Имя
	Surname CHAR(30) NOT NULL, # Фамилия
	FatherName CHAR(30) NOT NULL, # Отчество
	Sex BOOLEAN NOT NULL, 	# Пол
	Telephone CHAR(25) NOT NULL, # Телефон
	Address CHAR(200) NOT NULL, # Адрес
	DateIncome Date NOT NULL, # Устроился на работу
	DateOutcome Date NOT NULL, #Уволился
	UpTime CHAR(10) NOT NULL, # Проработанное время
	PRIMARY KEY(ID),
	KEY(ID, Name, SurName)
)

## Промежуточная таблица Секция
CREATE TABLE IF NOT EXISTS t_mid_Section
(
	ID UNSIGNED INT NOT NULL AUTO_INCREMENT,
	L_Director INT NOT NULL, # Ссылка на руководителя
	L_Section INT NOT NULL, # на нее ссылается секция
	PRIMARY KEY(ID),
	KEY (ID, L_Director, L_Section),
	FOREIGN KEY(L_Director) REFERENCES t_Director(ID)
)

## Таблица Секции
CREATE TABLE IF NOT EXISTS t_Section
(
	ID UNSIGNED INT NOT NULL AUTO_INCREMENT,
	Name CHAR(100) NOT NULL, # название
	Direct CHAR(100) NOT NULL, # направленность
	L_mid_Director INT NOT NULL, # ссылка не руководителя
	PRIMARY KEY(ID),
	KEY(ID, Name, L_Director),
	FOREIGN KEY(L_mid_Section) REFERENCES t_mid_Section(L_Section)
)

## Таблица Родители
CREATE TABLE IF NOT EXISTS t_Parent
(
	ID UNSIGNED INT NOT NULL AUTO_INCREMENT,
	Name CHAR(30) NOT NULL, # Имя
	Surname CHAR(30) NOT NULL, # Фамилия
	FatherName CHAR(30) NOT NULL, # Отчество
	Sex BOOLEAN NOT NULL,			# Пол
	Telephone CHAR(25) NOT NULL, # Телефон
	Address CHAR(200) NOT NULL, # Адрес
	WorkPlace CHAR(100) NOT NULL, # Место работы
	Post CHAR(100) NOT NULL, # Должность
	PRIMARY KEY(ID),
	KEY(ID, Name, SurName),
)

## Промежуточная таблица Дети
CREATE TABLE IF NOT EXISTS t_mid_Children
(
	ID UNSIGNED INT NOT NULL AUTO_INCREMENT,
	L_Parent INT NOT NULL, # ССылка на родителя
	L_Child INT NOT NULL, # на нее ссылается ребенок
	PRIMARY KEY(ID),
	FOREIGN KEY(L_Parent) REFERENCES t_Parent(ID),
)

## Таблица Дети
CREATE TABLE IF NOT EXISTS t_Children
(
	ID UNSIGNED INT NOT NULL AUTO_INCREMENT,
	Name CHAR(30) NOT NULL, # Имя
	Surname CHAR(30) NOT NULL, # Фамилия
	FatherName CHAR(30) NOT NULL, # Отчество
	Sex BOOLEAN NOT NULL,			# Пол
	Telephone CHAR(25) NOT NULL, # Телефон
	Address CHAR(200) NOT NULL, # Адрес
	DateIncome Date NOT NULL, # Поступил
	DateOutcome Date NOT NULL, # Ушел
	UpTime CHAR(10) NOT NULL, # Проведенное время
	L_Section INT NOT NULL, # ССылка на секцию
	L_Parent INT NOT NULL, # Ссылка на родителя
	PRIMARY KEY(ID),
	KEY(ID, Name, SurName),
	FOREIGN KEY(L_Section) REFERENCES t_Section(ID),
	FOREIGN KEY(L_Parent) REFERENCES t_mid_Children(L_Child)
)
saya771 Перечислите пожалуйста все запросы какие необходимы.
Запросы тогда возьму на себя

Что, все? Энтузиазм пропал?
Изображения
Тип файла: png SctructureOfDb.PNG (12.4 Кб, 121 просмотров)
Вложения
Тип файла: txt DB_free.sql.txt (2.1 Кб, 148 просмотров)

Последний раз редактировалось Stilet; 10.08.2010 в 13:05.
psycho-coder вне форума Ответить с цитированием
Старый 07.08.2010, 00:17   #12
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Родители можно было не включать, о них вроде здесь речь не идет )
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 07.08.2010, 13:34   #13
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Простите не профессионала. А нельзя все в одну таблицу по полям оно и быстрей работать будет?
baster128 вне форума Ответить с цитированием
Старый 07.08.2010, 13:39   #14
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

baster128, рекомендую ознакомиться с нормализацией баз данных...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 07.08.2010, 13:50   #15
saya771
Пользователь
 
Регистрация: 05.08.2010
Сообщений: 14
По умолчанию

psycho-coder Запросы: сколько мальчиков, сколько девочек, сколько в каждой секции, сколько воспитанников учится по направлениям, сколько детей с каждой школы, сколько детей по классам, сколько секций посещает каждый воспитанник, сколько детей посещает один кружок, два, три и тд.
saya771 вне форума Ответить с цитированием
Старый 07.08.2010, 20:14   #16
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Выложил свою, более менее упрощенную, версию базы данных. С запросом "сколько секций посещает каждый воспитанник" не удается довести до ума, а также со стажем воспитанника неурядица - не удается вычесть дату. Дело в том, что в первом запросе никак не получается выводить 3 окна запроса по выборке. Выходит только одно. В запросе, где надо определить стаж честно говоря не вычитывал даты в бд еще. Если будет еще время постараюсь найти тему с вычитанием дат, и доработать до конца с 1м запросом. В остальном вроде бы работает, тебе остается доработать запросы которые нужны, похожие на выборку - это не сложно, просто копируй запросы и в конструкторе меняй требуемые столбцы. В БД таблицы уже имеют связь. Тебе остается только ввести данные. Будут вопросы пиши 482-612-193.
Вложения
Тип файла: rar MyDataBase.rar (32.7 Кб, 20 просмотров)
Всё гениальное - просто!

Последний раз редактировалось .Phoenix; 07.08.2010 в 20:20.
.Phoenix вне форума Ответить с цитированием
Старый 08.08.2010, 11:13   #17
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

2.Phoenix Вы меня конечно извините, Ваша такая структура не правильная.
Нужно объединить таблицы Направленность и Секции.
Да и вообще у Вас там нет ключевых полей и связь один-ко-многим. И то, даже эта связь не правильная.

А таблица Родители нужна, потому что необходимо знать кто родитель конкретного ребенка.
Если Вы ходили в детстве в какую нибудь секцию, то должны помнить, что при записи Вас спрашивали про родителей.
Поэтому я с Вашей БД работать не буду. Если хотите переделывайте или делайте новую.

P.S. Так как больше ни кто не участвует, то нам с Вам нужно придти к общему решению
Изображения
Тип файла: png structure_DB.PNG (7.6 Кб, 97 просмотров)

Последний раз редактировалось psycho-coder; 08.08.2010 в 11:23.
psycho-coder вне форума Ответить с цитированием
Старый 08.08.2010, 11:57   #18
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Цитата:
Поэтому я с Вашей БД работать не буду. Если хотите переделывайте или делайте новую.
Я для тебя что ли её делал? :D Если saya771 попросит что-нибудь изменить, тогда переделаю по её вкусу, как ей будет удобней работать. О родителях речь вообще не шла, поэтому таблицу Родители я не создавал.
Всё гениальное - просто!

Последний раз редактировалось .Phoenix; 08.08.2010 в 11:59.
.Phoenix вне форума Ответить с цитированием
Старый 08.08.2010, 11:58   #19
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от .Phoenix Посмотреть сообщение
Я для тебя что ли её делал? :D
Все равно. С ней будет трудно работать))
psycho-coder вне форума Ответить с цитированием
Старый 08.08.2010, 12:03   #20
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Ещё раз говорю, если saya771 попросит что-то изменить, тогда я внесу изменения, а пока что поправки вносить не буду.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль - Распечатать фамилии детей данного детского сада,которые родились в определенном месяце Оксана Логачёва Паскаль, Turbo Pascal, PascalABC.NET 1 29.05.2010 06:11
Разработка Базы Данных для Детского лагеря Voyts Фриланс 1 05.12.2008 10:22
Разработка Базы Данных для Детского лагеря Voyts Фриланс 3 11.02.2008 19:10