PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » J'aimerais avoir un conseil pour mon code sql (posgresql) SVP ! » 29/10/2020 02:26:48

oui j'avais résolu mes erreurs sur les domaines, le code n'était pas correct, mais merci quand même !

#2 Général » J'aimerais avoir un conseil pour mon code sql (posgresql) SVP ! » 15/10/2020 18:02:24

Modaak
Réponses : 2

J'aimerais avoir un conseil pour mon code sql (posgresql), je n'arrive pas à exécuter la création de domaine et non plus de mes tables merci d'avance pour toutes réponses ou conseils ! wink

drop table if exists musiciens, labels, groupes, formations, membres, contrats, evenements cascade;
set datestyle to 'european';

drop domain if exists D_TYPE_PRODUCTION, D_INSTRUMENT cascade;

create domain D_TYPE_PRODUCTION as varchar(20)
	check(D_TYPE_PRODUCTION similar to '(Me|Pu|Ro|Bl|Re|*)%'
		  and length(D_TYPE_PRODUCTION) <= 6);

create domain D_INSTRUMENT as varchar(20)
	check(D_INSTRUMENT similar to '(G|D|B|V|P|G-R|G-B|D-R|D-B|B-R|B-B|V-R|V-B|P-R|P-B|)%'
		  and length(D_INSTRUMENT) <= 3);

-- TABLE labels
create table labels (
	id_label serial	primary key,
	nom char(50) not null,
	type_production D_TYPE_PRODUCTION default 'NC'
);

-- TABLE groupes
create table groupes (
	id_groupe serial primary key,
	nom char(60) not null,
	date_creation date not null,
	date_fin date,
	label integer references labels(id_label) on delete cascade on update cascade
);

-- TABLE musiciens
create table musiciens ( 
	id_musicien serial primary key,
	prenom char(50) not null,
	nom char(50) not null,
	date_naissance date not null check(date_naissance < date_deces),
	date_deces date null,
	instrument D_INSTRUMENT not null
);

alter table musiciens add check(age(date_deces, date_naissance) >= interval '16 years');

-- TABLE formations
create table formations (
	id_formation serial primary key,
	date_creation date not null check(date_creation < date_fin),
	date_fin date null,
	groupe integer not null,
	foreign key(groupe) references groupes(id_groupe)
);

-- TABLE membres
create table membres (
	musicien integer not null,
	formation integer not null,
	date_debut_participation date not null check(date_debut_participation < date_fin_participation),
	date_fin_participation date null,
	primary key(musicien, formation),
	foreign key(musicien) references musiciens(id_musicien),
	foreign key(formation) references formations(id_formation)
);

-- TABLE contrats
create table contrats (
	id_contrat integer not null primary key,
	date_contrat date not null
);

alter table contrats add column cachet integer not null default 1000;

-- TABLE evenements
create table evenements (
	id_evenement integer not null primary key,
	nom char(60) not null,
	lieu char(60) not null,
	nombre_spectateur integer null,
	formation integer references formations(id_formation),
	contrat integer references contrats(id_contrat)
);

Pied de page des forums

Propulsé par FluxBB