Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите связать две таблицы  (Прочитано 9278 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JIeshiy
Участник

ru
Offline Offline
Пол: Мужской

« : 17-09-2010 14:16 » 

CREATE TABLE Anketa
(emp_id int IDENTITY(1,1) PRIMARY KEY,
second_name varchar(30) NOT NULL,
first_name varchar(15) NOT NULL,
middle_name varchar(20) NULL,
sex char(1),
birth_date datetime,
position varchar(50)
CONSTRAINT const_Anketa UNIQUE
(second_name ASC, first_name ASC, birth_date DESC)
)   
CREATE TABLE Места Работы
(emp_id int IDENTITY(1,1) PRIMARY KEY,
second_name varchar(30) NOT NULL,
first_name varchar(15) NOT NULL,
middle_name varchar(20) NULL,
sex char(1),
birth_date datetime,
position varchar(50)
CONSTRAINT const_Места Работы UNIQUE
(second_name ASC, first_name ASC, birth_date DESC)
)   
Insert Into Anketa
(ФИО, дата и место  рождения, паспортные данные, личные качества, характеристики, дату занесения)
Values (Колосов Евгений Александрович, 28.11.1989 Пушкино, 4606659892 29.12.2009 выдан Пушкинским ОУФМС, целеустремленный, 17.09.2010)
Insert Into Места Работы
(дата поступления на работу, дата увольниния, место работы, причина увольнения)
Values (11.2009, 08.2010, ТопТелеком, по собственному желанию)
« Последнее редактирование: 17-09-2010 14:22 от JIeshiy » Записан
JIeshiy
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 17-09-2010 14:21 » 

суть в том что таблица "Места работы" хранит послужной список людей из таблицы "Анкета"
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 17-09-2010 14:40 » 

Цитата
CREATE TABLE Места Работы
(emp_id int IDENTITY(1,1) PRIMARY KEY,

это неправильно. должно быть

CREATE TABLE Места Работы
(work_id int IDENTITY(1,1) PRIMARY KEY,
emp_id int,
...


если синтаксис БД позволяет, то вешаем reference на emp_id из Анкеты. смысл в том, что у каждого employee может быть несколько мест работы, классическая связка один ко многим.

далее, совершенно непонятно, нафига в местах работы дублировать текстовую информацию о челе.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 17-09-2010 15:37 » 

вообще если по уму, то надо две сущности завести, люди и организации. по таблице на каждую. а в третьей линковочной таблице, хранить историю работ.
Записан

JIeshiy
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 17-09-2010 16:49 » 

просто первый раз пишу и мне нужно именно две таблицы
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 17-09-2010 16:56 » 

задачу сформулируйте. вариантов 3:

1. мы отслеживаем для фирм всех сотрудников в этом случае в таблице сотрудников добавляем ссылку на таблицу работ.
2. мы отслеживаем для людей все их места работы, тогда в местах работы добавляем ссылку на человека.
3. мы отслеживаем всё, тогда делаем третью таблицу с полями EMP_ID, WORK_ID. связка многие ко многим.
Записан

JIeshiy
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 17-09-2010 17:01 » 

спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines