Схема базы данных SQL из класса диаграммы - PullRequest
0 голосов
/ 11 апреля 2019

Я создал диаграмму классов, которую я хочу преобразовать в базу данных в SQL Server 2008. Я реализовал сценарии CREATE со связями и внешними ключами, но когда я пытаюсь скомпилировать их онлайн (https://www.eversql.com/sql-syntax-check-validator/), у меня всегда естьта же ошибка: У вас есть ошибка в синтаксисе SQL, похоже, ошибка примерно такова: 'CREATE TABLE CONTRAT (CONTRAT_ID INT PRIMARY KEY, Num_CONTRAT VARCHAR (50) N' в строке 18

Не могли бы вы помочь мне проверить БД по диаграмме?

Диаграмма: Диаграмма классов

Код SQL:

CREATE TABLE CLIENT
(
Client_ID INT PRIMARY KEY, 
Type_Client VARCHAR(25) NOT NULL CHECK (Type_Client IN('Physique', 'Morale')),
Date_creation_client DATETIME NOT NULL, 
CIN INT NULL,
Nom Varchar(40) NULL,
Prenom Varchar(40) NULL,
Sexe Varchar(20) NULL,
Tel INT NULL,
Date_Naissance DATE NULL,
Etat_civil Varchar(20) NULL,
Nationalite Varchar(40) NULL,
Adresse Varchar (50) NULL,
Ville Varchar (20) NULL,
Titre Varchar (50) NULL,
Nature_juridique Varchar(20) NULL,
ID_SIRET Varchar(40) NULL
);


CREATE TABLE CONTRAT
(
CONTRAT_ID INT PRIMARY KEY,
Num_CONTRAT VARCHAR(50) NOT NULL,
Type_CONTRAT Varchar(40),
Flotant Varchar(4) NOT NULL CHECK (Flotant IN('Oui', 'Non')),
Resilie Varchar(4) NOT NULL CHECK (Resilie IN('Oui', 'Non')),
Date_souscription DATE NULL, 
Dte_effet DATE NULL,
Fractionnement VARCHAR(25) NOT NULL CHECK (Fractionnement IN('trimestriel', 'semestriel','annuel')),
Fk_COMPAGNY_ID  INT FOREIGN KEY REFERENCES COMPAGNIES(COMPAGNY_ID)
);

CREATE TABLE QUITANCE 
(
QUITANCE_ID INT PRIMARY KEY,
Echeance DATE NOT NULL,
Prime_net DECIMAL NULL,
Taxe DECIMAL NULL, 
DATE_Creation DATE NOT NULL,
FK_CONTRAT_ID INT UNIQUE FOREIGN KEY REFERENCES CONTRAT(CONTRAT_ID),
FK_Client_ID INT UNIQUE FOREIGN KEY REFERENCES Client(Client_ID)
);

CREATE TABLE OBJET_ASSURE
(

OBJET_ID INT PRIMARY KEY,
Type_objet VARCHAR(25) NOT NULL;
Marque_automobile VARCHAR(25) NULL,
Immatriculation_automobile VARCHAR(25) NULL,
Puissance_automobile VARCHAR(25) NULL,
valeur_automobile VARCHAR(25) NULL,
destination_voyage VARCHAR(25) NULL,
Debut_voyage DATE NULL,
Fin_voyage DATE NULL,
Adresse_incendie VARCHAR(25) NULL,
valeur_incendie VARCHAR(25) NULL,
age_assurance_vie INT NULL,
dossier_medical_exist VARCHAR(4) NULL CHECK (dossier_medical_exist IN('Oui', 'Non')),
Fk_CONTRAT_ID  INT FOREIGN KEY REFERENCES CONTRAT(CONTRAT_ID)
);


CREATE TABLE COMPAGNIES
(
COMPAGNY_ID INT PRIMARY KEY,
Nom VARCHAR(25) NOT NULL;
Adresse VARCHAR(25)
);


CREATE TABLE Encaissement
(
ID_Encaissement INT PRIMARY KEY,
DATE_JOURNEE DATE NOT NULL,
type VARCHAR(20) NOT NULL CHECK (type IN('Espece', 'Cheque')),
type2 VARCHAR(2) NOT NULL CHECK (type2 IN('C', 'T', 'R')),
Montant Decimal NOT NULL,
FK_CONTRAT_ID INT UNIQUE FOREIGN KEY REFERENCES CONTRAT(CONTRAT_ID),
FK_QUITANCE_ID INT UNIQUE FOREIGN KEY REFERENCES QUITANCE(QUITANCE_ID),
);



CREATE TABLE Feuille_Encaissement
(
ID_Feuille INT PRIMARY KEY,
DATE_JOURNEE DATE NOT NULL,
statut VARCHAR(20) NOT NULL CHECK (type IN('ouverte', 'fermee')),
Total_CE DECIMAL NOT NULL,
Total_TE DECIMAL NOT NULL,
Total_CC DECIMAL NOT NULL,
Total_TC DECIMAL NOT NULL,
Total_ES DECIMAL NOT NULL,
Total_CH DECIMAL NOT NULL,
);

РЕДАКТИРОВАТЬ 1:

Благодаря @Larnu я исправил синтаксические ошибки: Обновлен сценарий

И я также обновил свою диаграмму до: Обновленная диаграмма

Как видите, «Feuille_Encaissement» представляет собой совокупность нескольких «Encaissement» (точно «Feuille_Encaissement» имеет 0..4 «Encaissement» с использованием поля даты «Date_journee»). Как реализовать этов SQL? и есть еще один зольПредлагать это?Я хочу сохранить всю строку «Encaissement» в «Feuille_Encaissement», где «date_journee» эквивалентен.

EDIT 2: Итак, что я хочу сделать:
* РеализацияЗадание Cron для создания одного "Feuille_Encaissement" Каждый день со столбцом даты "date_journee" и получения всех объектов "Encaissement", где Feuille_Encaissement.date_journée == Encaissement.date_journee

  • Выполнять вычисления и заполнятьСтолбцы Feuille_Encaissement "

    В заключение я хочу страницу с датой, содержащей столбцы" Feuille_Encaissement "и все данные" Encaissement "этой ДАТЫ.

...