2014-10-05 4 views
0

Я делаю проект класса, состоящий из трех таблиц: Member, Event и Attendance.Отношение SQL между 3 таблицей

  • Таблица Член содержит: MID в качестве первичного ключа, имя, адрес и т.д. ... и имеет 1 или много 0 или многие отношения с участием
  • Таблица событий содержит: EventNo в качестве первичного ключа, EventName и т.д ... и имеет 1 или многие 0 или многие отношения с участием
  • посещаемости содержат: MID и EventNo

я могу создать таблицу, но я не понимаю их отношений. Может ли кто-нибудь кратко объяснить их отношения и помочь мне написать код ??? Заранее спасибо

+1

Лучший способ понять соотношение сделать это, и если это не поможет - Попробуйте дома! Вы должны сначала показать свои усилия, чтобы понять вещь самостоятельно, и это в основном говорит вам сначала проверить ее: –

+0

Просто для подтверждения, вы действительно используете Microsoft SQL Server? Синтаксис между базами данных различается. Связи должны устанавливаться путем определения ограничений внешнего ключа. Что касается мощности, которая не имеет особого отношения к DDL таблицы, вступает в игру, если вы рисуете диаграмму. –

+0

Возможный дубликат [отношения SQL между 3 таблицами] (http://stackoverflow.com/questions/23853781/sql-relation-between3-tables) –

ответ

0
CREATE TABLE Member 
    ([MID] int primary key, [Name] varchar(5), [Address] varchar(8)) 
; 

INSERT INTO Member 
    ([MID], [Name], [Address]) 
VALUES 
    (1, 'Name1', 'Address1') 
; 



CREATE TABLE Event 
    ([EventNo] int primary key, [EventName] varchar(6)) 
; 

INSERT INTO Event 
    ([EventNo], [EventName]) 
VALUES 
    (1, 'Event1') 
; 

    CREATE TABLE Attendance 
     ([EventNo] int FOREIGN KEY REFERENCES Event(EventNo), [MID] int FOREIGN KEY REFERENCES Member(MID)) 
    ; 

INSERT INTO Attendance 
    ([EventNo], [MID]) 
VALUES 
    (1, 1) 
; 

Выбрать запрос будет как этот

select * from Event join Attendance on Event.EventNo=Attendance.EventNo 
join Member on Member.MID=Attendance.MID 

DEMO

0

, например:

create table member (
    MID INT primary key ..., 
    Name VARCHAR(30), 
    ... 
); 

create table event (
    EventNo INT primary key ..., 
    EventName VARCHAR(30), 
    ... 
); 

create table attenance (
    EventNo INT, 
    MID INT, 
    //here add constraint for MID and EventNo - they are foreign key from other tables. 
    UNIQUE(EventNo, MID) 
); 

и оказывается, что у вас есть связь: many-to-many между событием и членом. One member может быть в many events. One event есть many members.

коррекции орфографии

+0

Итак, мне нужно создать связь между таблицей Event и Member? ?? Если да, то как это сделать ??? – user3676506

+0

Посмотрите во втором ответе. – W92

Смежные вопросы