2011-03-24, 18:06
#1
Sitter och försöker bygga ihop en mässa där det, kortfattat, finns två typers besökare och aktiviteter respektive. I mässan ingår en del aktiviteter och vissa av dem har ett max antal besökare. För att kunna lista/spara besökarna på varje aktivitet har jag gjort en tabell som innehåller attributen "aktivitet" och "person" (båda två har unika ID). Naturligtvis(?) har jag även en tabell för besökare och en för aktiviteterna. I tabellen med aktiviteterna finns attributet "max antal besökare".
Hur skapar jag begränsningen att det max får skrivas in X antal personer på aktivitet Y?
Jag har kortat ner problembeskrivningen ganska ordentligt men jag tror det räcker för min frågeställning. Skulle någon mer information behövas är det bara att säga till.
Klistrar in all min kod, observera att det finns tabeller som jag inte beskrivit eftersom de egentligen inte har med frågeställningen att göra men som jag lämnar för översiktens skull.
Tack på förhand.
Hur skapar jag begränsningen att det max får skrivas in X antal personer på aktivitet Y?
Jag har kortat ner problembeskrivningen ganska ordentligt men jag tror det räcker för min frågeställning. Skulle någon mer information behövas är det bara att säga till.
Klistrar in all min kod, observera att det finns tabeller som jag inte beskrivit eftersom de egentligen inte har med frågeställningen att göra men som jag lämnar för översiktens skull.
Kod:
---------------------------------------PERSONS-------------------------------------- create table personTypes (personTypeID char(1) primary key, personType varchar(11)) ; insert into personTypes select 'P', 'Participant' union all select 'C', 'Companion' ; create table persons (personID varchar(3) primary key, personTypeID char(1) not null references personTypes(personTypeID), name varchar(10) NOT NULL, surname varchar(10) NOT NULL, address varchar(10) NOT NULL) ; create table participants (personID varchar(3) primary key references persons(personID), personTypeID char(1) not null check (personTypeID = 'P'), inscriptionNo varchar(3) unique NOT NULL, inscriptionDate datetime NOT NULL ); create table companions (personID varchar(3) primary key references persons(personID), personTypeID char(1) not null check (personTypeID = 'C'), master varchar(3) not null references persons(personID)) ; ------------------------ACTIVITIES----------------------------------------- create table activityTypes (activityTypeID char(1) primary key, activityType varchar(11) NOT NULL) ; insert into activityTypes select 'S', 'Scientific' union all select 'C', 'Cultural' ; create table activities (activityID varchar(3) primary key, activityTypeID char(1) NOT NULL references activityTypes(activityTypeID), activityName varchar(10) NOT NULL, description varchar(100), date datetime NOT NULL) ; create table scientificActivity (activityID varchar(3) primary key references activities(activityID), activityTypeID char(1) NOT NULL check (activityTypeID = 'S') ); create table culturalActivity (activityID varchar(3) primary key references activities(activityID), activityTypeID char(1) NOT NULL check (activityTypeID = 'C'), maximum integer NOT NULL check (maximum > 0)); create table participantScientific (inscriptionNo varchar(3) unique NOT NULL references participants(inscriptionNo), activityID varchar(3) NOT NULL references scientificActivity(activityID) ); create table personCultural (personID varchar(3) NOT NULL references persons(personID) , activityID varchar(3) NOT NULL references culturalActivity(activityID) check count(personID) <= activityID.max );
Tack på förhand.