पाठ 6 / 25
Mapping ER Diagrams to Tables
Convert ER designs into relational schemas correctly.
From diagram to schema
Standard rules turn an ER diagram into tables. Strong entity → a table with its simple attributes; composite attributes are flattened into their components; the key becomes the primary key. Multi-valued attribute → a separate table with the entity's key plus the value, for example student_phones(roll_no, phone). Derived attributes are usually not stored. Weak entity → a table containing its attributes plus the owner's key as a foreign key; the primary key is (owner key, partial key), often with ON DELETE CASCADE. 1:N relationship → add the key of the "one" side as a foreign key in the "many" side's table, plus any relationship attributes. 1:1 relationship → a foreign key on either side, preferably the side with total participation. M:N relationship → a separate junction table whose primary key combines both entity keys, plus the relationship's attributes. Specialisation → one table per class with shared keys, a single table with a type column, or tables for sub-classes only, depending on the constraints.
The university design as SQL tables
Each table comes from one mapping rule.
CREATE TABLE department (dept_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);
CREATE TABLE student (
roll_no INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL, -- composite attribute flattened
last_name VARCHAR(50) NOT NULL,
dob DATE NOT NULL -- age is derived, not stored
);
CREATE TABLE student_phone ( -- multi-valued attribute
roll_no INT REFERENCES student(roll_no) ON DELETE CASCADE,
phone VARCHAR(15),
PRIMARY KEY (roll_no, phone)
);
CREATE TABLE course ( -- 1:N with department, total participation
course_id VARCHAR(10) PRIMARY KEY,
title VARCHAR(100) NOT NULL,
credits INT NOT NULL,
dept_id INT NOT NULL REFERENCES department(dept_id)
);
CREATE TABLE enrolment ( -- M:N relationship with attributes
roll_no INT REFERENCES student(roll_no),
course_id VARCHAR(10) REFERENCES course(course_id),
semester VARCHAR(10),
grade CHAR(2),
PRIMARY KEY (roll_no, course_id, semester)
);M:N always needs a junction table
You cannot store a many-to-many relationship with a single foreign key column; one student would need many course IDs in one cell. The junction table is the correct relational representation.
त्वरित जाँच: How is a many-to-many relationship between STUDENT and COURSE represented in tables?
- A separate junction table holding keys of both, plus relationship attributes
- A foreign key in STUDENT pointing to COURSE
- A comma-separated list of course IDs in STUDENT
- It cannot be represented
Answer
A separate junction table holding keys of both, plus relationship attributes — M:N relationships map to their own table with a composite key from both entities.