ER / реляционная таблица к базе данных - PullRequest
0 голосов
/ 02 декабря 2019

Итак, у меня есть следующие команды SQL для описания ниже. Я не уверен, что у меня есть ограничения, особенно для внешних ключей, и когда использовать не нуль, а когда нет. Может ли кто-нибудь проверить правильность команд на основе описания базы данных?

  1. Автосалоны имеют уникальный номер бизнес-идентификатора, название дилера, город, штат и уникальный URL-адрес веб-сайта. Бизнес-идентификатор - это число в диапазоне от 1000 до 9999.
  2. Продавцы имеют имя, фамилию, возраст, пол и уникальный идентификационный номер сотрудника. Номер сотрудника находится в диапазоне 100-999.
  3. У клиентов есть имя, фамилия, город, штат, пол, возраст и уникальный идентификационный номер налогоплательщика. Идентификационный номер налогоплательщика - 9 цифр.
  4. Автомобили имеют марку, модель, год, предлагаемую цену и уникальный идентификационный номер автомобиля. Автомобиль может иметь (возможно, несколько) цветов, которые должны моделироваться как атрибут. Примечание: маркой автомобиля является производитель (например, Ford, Honda, BMW), а модель - название модели (например, Civic, Accord, CRX).
  5. Продавцы работают в дилерских центрах. Для того, чтобы быть в базе данных, продавец должен работать в автосалоне. Тем не менее, дилерский центр может существовать в базе данных без каких-либо продавцов. У дилеров есть много продавцов, которые работают на них, и продавец может работать во многих различных дилерских центрах. В базе данных должна быть указана дата начала, когда продавец начал работать в автосалоне.
  6. Дилерство собственных автомобилей. Дилерский центр может иметь много автомобилей, или они могут быть полностью из инвентаря и иметь ноль автомобилей. Автомобиль может принадлежать только одному дилеру и должен принадлежать дилеру, чтобы быть в базе данных. В базе данных должна быть указана дата, когда автосалон приобрел автомобиль, и цена, которую автосалон заплатил за автомобиль.
  7. Продавцы продают автомобили покупателям. Даже если продавец не продал автомобили покупателям, их все равно следует хранить в базе данных. Однако в базе данных должна храниться информация только о клиентах, которые приобрели автомобиль у продавца. Информация об автомобилях, принадлежащих дилерам, должна храниться в базе данных независимо от того, проданы они или нет. Продавец может продать конкретный автомобиль только одному клиенту. Аналогичным образом, клиент может приобрести конкретный автомобиль только у одного продавца. Однако клиент может приобрести более одного автомобиля у одного и того же продавца. Когда продавец продает автомобиль покупателю, цена продажи и дата должны быть записаны в базе данных.

create table Car_dealership(
Business_id int check ( 1000 >= business_id <= 9999),
b_name varchar(30) not null,
b_city varchar(20) not null,
b_state char(2) not null,
web_url varchar(100) not null,
primary key (Business_id)
);

create table salesperson (
employee_id int check ( 100 >= employee_id <= 999),
first_name varchar (30) not null,
last_name varchar (30),
age int check (0 < age < 130) , 
gender char(1),
/* assumed gender is either Male (M) or Female (F) */
primary key (employee_id)
);

create table customers (
taxpayer_id decimal(9,0),
first_name varchar (30) not null,
last_name varchar (30),
age int check (0 < age < 130), 
gender char(1),
/* assumed gender is either Male (M) or Female (F) */
city varchar (20),
state char(2),
primary key (taypayer_id),
);

create table cars (
vehicle_id int,
make varchar(30),
model varchar(30),
make_year year,
suggested_price int, 
business_id int, 
date_acquired date,
price_paid int,
primary key (vehicle_id),
foreign key(business_id) references Car_Dealerships (business_id)
);

create table car_colors (
vehicle_id int,
colors varchar (30),
primary key (vehicle_id),
foreign key(vehicle_id) references cars (vehicle_id)
);

create table works_for (
business_id int,
employee_id int,
start_date date not null,
primary key (business_id, employee_id),
foreign key(business_id) references Car_Dealerships (business_id),
foreign key(employee_id) references salesperson (employee_id) 
);

create table sells (
vehicle_id int,
taxpayer_id int,
employee_id int,  
sale_price int, 
date_sold date,
primary key (vehicle_id) ,
foreign key(vehicle_id) references cars (vehicle_id),
foreign key(taxpayer_id) references customers (taxpayer_id),
foreign key(employee_id) references salesperson (employee_id)
);

...