āϏāĻŽāϏā§āϝāĻž: āĻāĻ āϏā§āϞā§āϰ āĻā§āϤāϰ āĻāĻŽāĻž āĻĻāĻŋā§ā§ āĻ āύā§āĻāĻā§āϞ⧠āύāĻžāĻŽ āϞā§āĻāĻž (āϝā§āĻŽāύ: SQL, Java, PHP)āĨ¤
āϏāĻŽāĻžāϧāĻžāύ: āĻĒā§āϰāϤāĻŋāĻāĻž āĻāϰ⧠āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻž āĻĄā§āĻāĻž āĻĨāĻžāĻāĻŦā§āĨ¤ āĻāĻā§āϰ āĻ āϧāĻŋāĻ āϏāĻžāĻŦāĻā§āĻā§āĻ āĻĨāĻžāĻāϞ⧠āĻāϞāĻžāĻĻāĻž āϰ⧠(Row) āĻŦāĻžāύāĻžāύāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž: āĻāĻ āϰā§āĻŽā§ āĻāĻāĻāύāĻ āĻĨāĻžāĻāĻŦā§, āĻāĻāĻžāĻāĻŋāĻā§ā§āĻŋ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤
āĻāĻāĻž āϤāĻāύāĻ āĻā§āĻ āĻāϰāĻŦā§āύ āϝāĻāύ āĻāĻĒāύāĻžāϰ Primary Key āĻĻā§āĻāĻāĻž āĻāϞāĻžāĻŽ āĻŽāĻŋāϞ⧠āĻšā§ (āϝā§āĻŽāύ: Student_ID + Course_ID)āĨ¤
āϏāĻŽāϏā§āϝāĻž: āϝāĻĻāĻŋ āĻāĻŽāύ āĻā§āύ⧠āĻāϞāĻžāĻŽ āĻĨāĻžāĻā§ āϝāĻž āĻļā§āϧ⧠Course_ID-āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§, āĻāĻŋāύā§āϤ⧠Student_ID-āϰ āϏāĻžāĻĨā§ āϤāĻžāϰ āĻā§āύ⧠āϏāĻŽā§āĻĒāϰā§āĻ āύā§āĻāĨ¤
āϏāĻŽāĻžāϧāĻžāύ: āĻāĻ āĻāϞāĻžāĻŽāĻāĻžāĻā§ āϞāĻžāĻĨāĻŋ āĻĻāĻŋā§ā§ āĻŦā§āϰ āĻāϰ⧠āĻāϞāĻžāĻĻāĻž āĻā§āĻŦāĻŋāϞ āĻŦāĻžāύāĻŋā§ā§ āĻĻāĻŋāύāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž: āϝāĻĻāĻŋ āĻā§ā§āĻž (Composite) āĻāĻžāĻŦāĻŋ āĻĨāĻžāĻā§, āϤāĻŦā§ āĻŦāĻžāĻāĻŋ āϏāĻŦ āĻāϞāĻžāĻŽāĻā§ āĻāĻ āĻĻā§āĻ āĻāĻžāĻŦāĻŋāϰ āĻāĻĒāϰāĻ āύāĻŋāϰā§āĻāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻāύā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰāϞ⧠āĻšāĻŦā§ āύāĻžāĨ¤
āϏāĻŽāϏā§āϝāĻž: āϧāϰā§āύ, ID āĻā§āύ⧠Name-āĻā§, āĻāϰ Name āĻā§āύ⧠Address-āĻā§āĨ¤ āĻāĻāύ Address āĻāĻŋāύā§āϤ⧠ID-āϰ āĻāĻĒāϰ āϏāϰāĻžāϏāϰāĻŋ āύāĻŋāϰā§āĻāϰ āύāĻž āĻāϰ⧠Name-āĻāϰ āĻāĻĒāϰ āĻĻāĻžāϞāĻžāϞāĻŋ āĻāϰāĻā§āĨ¤
āϏāĻŽāĻžāϧāĻžāύ: āĻāĻ āĻĻāĻžāϞāĻžāϞāĻŋ āĻŦāύā§āϧ āĻāϰāϤ⧠Name āĻāϰ Address-āĻā§ āĻāϞāĻžāĻĻāĻž āĻā§āĻŦāĻŋāϞ⧠āĻĒāĻžāĻ āĻŋā§ā§ āĻĻāĻŋāύāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž: Non-key āĻāϞāĻžāĻŽ āϝā§āύ āĻ āύā§āϝ āĻā§āύ⧠Non-key āĻāϞāĻžāĻŽā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āύāĻž āĻāϰā§āĨ¤ āϏāĻŦāĻžāĻ āĻļā§āϧ⧠âPrimary Keyâ-āϰ āĻā§āϞāĻžāĻŽ āĻšāĻŦā§āĨ¤
āĻāĻāĻž 3NF-āĻāϰ āĻŦā§ āĻāĻžāĻāĨ¤ āĻļāϰā§āϤ: āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύāĻžāϞ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύā§āϏāĻŋ $X \rightarrow Y$ āĻšāϞā§, $X$-āĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ Super Key āĻšāϤ⧠āĻšāĻŦā§āĨ¤
āϏāĻŽāϏā§āϝāĻž: āϧāϰā§āύ, āĻā§āĻŦāĻŋāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻž āĻāϞāĻžāĻŽ āĻāĻā§ āϝāĻž āĻĒā§āϰāĻžāĻāĻŽāĻžāϰāĻŋ āĻāĻŋ āύāĻž, āĻāĻŋāύā§āϤ⧠āϏ⧠āĻ āύā§āϝ āĻāĻžāĻāĻā§ āĻāύā§āĻā§āϰā§āϞ (Determine) āĻāϰāĻā§āĨ¤
āϏāĻŽāĻžāϧāĻžāύ: āϝ⧠āĻāύā§āĻā§āϰā§āϞ āĻāϰāĻŦā§, āϤāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ âāĻŦāϏâ (Primary Key/Super Key) āĻšāϤ⧠āĻšāĻŦā§āĨ¤ āϝāĻĻāĻŋ āϏ⧠āĻŦāϏ āύāĻž āĻšā§, āϤāĻžāĻā§ āĻāϞāĻžāĻĻāĻž āĻā§āĻŦāĻŋāϞ āĻĻāĻŋā§ā§ āĻŦāϏ āĻŦāĻžāύāĻŋā§ā§ āĻĻāĻŋāύāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž: āĻā§āĻŦāĻŋāϞ⧠āϝāĻĻāĻŋ āĻā§āĻ āĻāĻžāĻāĻā§ āĻā§āύā§, āϤāĻŦā§ āĻŦāĻžāĻŽ āĻĒāĻžāĻļā§āϰ āĻŽāĻžāύā§āώāĻāĻžāĻā§ (Determinant) āĻ āĻŦāĻļā§āϝāĻ āĻā§āĻŦāĻŋāϞā§āϰ āĻŦāϏ (Key) āĻšāϤ⧠āĻšāĻŦā§āĨ¤
āϧāϰā§āύ, āĻāĻĒāύāĻžāϰ āĻāĻžāĻ⧠⧍āĻāĻž āĻā§āĻŦāĻŋāϞ āĻāĻā§: ā§§. Author (āϞā§āĻāĻ) āĨ¨. Books (āĻŦāĻ)
āĻāĻĒāύāĻŋ āĻāĻžāĻāϞā§āύ: âāϏāĻŦ āϞā§āĻāĻā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āϞā§āĻāĻž āĻŦāĻāĻā§āϞā§āϰ āĻāĻžāĻāĻā§āϞ āĻĻā§āĻāĻžāĻŦā§āύāĨ¤â
ā§§. āĻĒā§āϰāĻĨāĻŽā§ āĻāĻĒāύāĻŋ āĻāĻāĻāĻž āĻā§ā§ā§āϰāĻŋ āĻāϰāϞā§āύ āϏāĻŦ āϞā§āĻāĻāĻā§ āĻāύāϤā§:
SELECT * FROM authors; (āĻāĻāĻž āĻšāϞ⧠1 āύāĻŽā§āĻŦāϰ āĻā§ā§ā§āϰāĻŋ)
⧍. āĻāĻāύ āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ ā§§ā§Ļ āĻāύ āϞā§āĻāĻ āĻāĻā§āĨ¤ āĻāĻĒāύāĻŋ āĻāĻāĻāĻž āϞā§āĻĒ āĻāĻžāϞāĻžāϞā§āύ āϤāĻžāĻĻā§āϰ āĻŦāĻāĻā§āϞ⧠āĻŦā§āϰ āĻāϰāϤā§:
SELECT * FROM books WHERE author_id = 1;SELECT * FROM books WHERE author_id = 2;āĻĢāϞāĻžāĻĢāϞ: ā§§āĻāĻž āĻā§ā§ā§āϰāĻŋ āĻĒā§āϞāĻžāϏ ā§§ā§ĻāĻāĻž āĻā§ā§ā§āϰāĻŋ = ā§§ā§§āĻāĻž āĻā§ā§ā§āϰāĻŋāĨ¤ āĻāĻāĻžāĻ N + 1 āϏāĻŽāϏā§āϝāĻžāĨ¤ āϞā§āĻāĻā§āϰ āϏāĻāĻā§āϝāĻž ā§§ā§Ļā§Ļā§Ļ āĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻĄā§āĻāĻžāĻŦā§āϏ⧠⧧ā§Ļā§Ļā§§ āĻŦāĻžāϰ āĻā§ā§ā§āϰāĻŋ āĻšāĻŦā§, āϝāĻž āĻāĻĒāύāĻžāϰ āĻā§ā§āĻŦāϏāĻžāĻāĻāĻā§ āϏā§āϞ⧠āĻāϰ⧠āĻĻāĻŋāĻŦā§āĨ¤
āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧠āĻāϞāĻžāĻĻāĻž āĻāϞāĻžāĻĻāĻž āĻā§ā§ā§āϰāĻŋ āύāĻž āĻāϰ⧠JOIN āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻ āĻĨāĻŦāĻž āϏāĻŦ āĻĄā§āĻāĻž āĻāĻāĻŦāĻžāϰ⧠āύāĻŋā§ā§ āĻāϏāĻžāĨ¤
SELECT authors.name, books.title FROM authors JOIN books ON authors.id = books.author_id;
(āĻāĻāĻžāύ⧠āĻŽāĻžāϤā§āϰ ā§§āĻāĻž āĻā§ā§ā§āϰāĻŋāϤā§āĻ āϏāĻŦ āĻĄā§āĻāĻž āĻāϞ⧠āĻāϏāĻŦā§!)
āϞā§āĻĒā§āϰ āĻā§āϤāϰ āĻā§ā§ā§āϰāĻŋ āύāĻž āĻāϰ⧠āĻļā§āϰā§āϤā§āĻ with āĻŦāĻž include āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāĨ¤
$authors = Author::all(); (āĻĒāϰ⧠āϞā§āĻĒā§ āĻŦāĻ āĻā§āĻāĻāϞ⧠N+1 āĻšāĻŦā§)$authors = Author::with('books')->get(); (āĻāĻāĻŦāĻžāϰ⧠āϏāĻŦ āĻŦāĻāϏāĻš āύāĻŋā§ā§ āĻāϏāĻŦā§)āϰāĻŋāϞā§āĻļāύ āĻŦā§āϰ āĻāϰāĻžāϰ āϏāĻŽā§ āϏāĻŦāϏāĻŽā§ āĻāĻā§ āĻĻāĻŋāĻ (Both Sides) āĻĨā§āĻā§ āĻāĻŋāύā§āϤāĻž āĻāϰāĻŦā§āύāĨ¤
āϏā§āϤā§āϰ: āĻāĻāĻāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻžāĻāĨ¤
User āĻāĻŦāĻ User_Profile (āĻ
āĻĨāĻŦāĻž NID)āĨ¤Profile āĻā§āĻŦāĻŋāϞ⧠user_id āĻĨāĻžāĻā§ āĻāĻŦāĻ āϏā§āĻāĻž Unique āĻšā§āĨ¤āϏā§āϤā§āϰ: āĻāĻāĻāύā§āϰ āĻ āύā§āĻāĻā§āϞā§, āĻāĻŋāύā§āϤ⧠āĻāĻ āĻ āύā§āĻāĻā§āϞā§āϰ āĻŽāĻžāϞāĻŋāĻ āĻāĻāĻāύāĻāĨ¤
Customer āĻāĻŦāĻ OrdersāĨ¤customer_id āĻŦāĻž Foreign Key āĻĨāĻžāĻāĻŦā§āĨ¤āϏā§āϤā§āϰ: āĻāĻā§ āĻĻāĻŋāĻā§āĻ âāĻ āύā§āĻāĻā§āϞā§â āĻšāĻā§āĻžāϰ āϏā§āϝā§āĻ āĻāĻā§āĨ¤
Student āĻāĻŦāĻ CourseāĨ¤enrollments) āϝā§āĻāĻžāύ⧠āĻĻā§āĻ āĻā§āĻŦāĻŋāϞā§āϰ ID āĻĨāĻžāĻā§āĨ¤āϝāĻĻāĻŋ āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§āĻžāϰ ā§ĢāĻāĻž āĻā§āĻŦāĻŋāϞ āĻĻā§ā§ (āϝā§āĻŽāύ: Users, Posts, Comments, Categories, Tags):
āϝāĻāύ āĻāĻāĻāĻž āĻĒā§āϰāĻžāĻāĻŽāĻžāϰāĻŋ āĻā§ āĻĄāĻŋāϞāĻŋāĻ āĻāϰāĻž āĻšā§, āϤāĻāύ āϤāĻžāϰ āϏāĻžāĻĨā§ āϝā§āĻā§āϤ āĻĢāϰā§āύ āĻā§āĻā§āϞā§āϰ āĻāĻĒāϰ āĻā§ āĻĒā§āϰāĻāĻžāĻŦ āĻĒā§āĻŦā§, āϤāĻž āĻāĻ āϰā§āϞāϏāĻā§āϞ⧠āĻ āĻŋāĻ āĻāϰā§āĨ¤
āϞāĻāĻŋāĻ: āϝāĻĻāĻŋ Parent āĻā§āĻŦāĻŋāϞā§āϰ āĻā§āύ⧠āϰ⧠āĻĄāĻŋāϞāĻŋāĻ āĻšā§, āϤāĻŦā§ āϤāĻžāϰ āϏāĻžāĻĨā§ āϝā§āĻā§āϤ Child āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻŦ āϰ⧠āĻ āĻā§āĻŽā§āĻāĻŋāĻ āĻĄāĻŋāϞāĻŋāĻ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤
āϞāĻāĻŋāĻ: āϝāĻĻāĻŋ Parent āĻā§āĻŦāĻŋāϞā§āϰ āϰ⧠āĻĄāĻŋāϞāĻŋāĻ āĻšā§, āϤāĻŦā§ Child āĻā§āĻŦāĻŋāϞā§āϰ āĻĢāϰā§āύ āĻā§ āĻāϞāĻžāĻŽāĻāĻŋ NULL āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ (āϤāĻŦā§ āĻāϞāĻžāĻŽāĻāĻŋ NULL āĻāϞāĻžāĻ āĻāϰāϤ⧠āĻšāĻŦā§)āĨ¤
āϞāĻāĻŋāĻ: āϝāϤāĻā§āώāĻŖ Child āĻā§āĻŦāĻŋāϞ⧠āĻā§āύ⧠āĻĄā§āĻāĻž āĻĨāĻžāĻāĻŦā§, āϤāϤāĻā§āώāĻŖ āĻāĻĒāύāĻŋ Parent āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻ āϰā§-āĻāĻŋ āĻĄāĻŋāϞāĻŋāĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻžāĨ¤ āĻĄā§āĻāĻžāĻŦā§āϏ āĻāĻĒāύāĻžāĻā§ Error āĻĻā§āĻāĻžāĻŦā§āĨ¤
āϞāĻāĻŋāĻ: Parent āϰ⧠āĻĄāĻŋāϞāĻŋāĻ āĻšāϞ⧠Child āĻā§āĻŦāĻŋāϞā§āϰ āĻĢāϰā§āύ āĻā§ āĻāϞāĻžāĻŽāĻāĻŋ āĻāĻāĻāĻŋ âDefault Valueâ āϤ⧠āϏā§āĻ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤
| Rule | Parent āĻĄāĻŋāϞāĻŋāĻ āĻšāϞ⧠Child-āĻāϰ āĻ āĻŦāϏā§āĻĨāĻž |
|---|---|
| CASCADE | āϏāĻŦ āĻĄāĻŋāϞāĻŋāĻ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ |
| SET NULL | āĻāϞāĻžāĻŽāĻāĻŋ āĻāĻžāϞāĻŋ (NULL) āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ |
| RESTRICT | āĻĄāĻŋāϞāĻŋāĻ āĻāϰāϤ⧠āĻĻāĻŋāĻŦā§ āύāĻž (Error)āĨ¤ |
| SET DEFAULT | āĻāĻā§ āĻĨā§āĻā§ āϏā§āĻ āĻāϰāĻž āĻā§āϝāĻžāϞ⧠āĻŦāϏāĻŦā§āĨ¤ |
CREATE TABLE Orders (
OrderID int PRIMARY KEY,
CustomerID int,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
ON DELETE CASCADE -- āĻāĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϰā§āϞ āϏā§āĻ āĻāϰā§āύ
);
| āĻŦā§āĻļāĻŋāώā§āĻā§āϝ | WHERE | HAVING |
|---|---|---|
| āĻāĻāύ āĻŦāϏā§? | GROUP BY āĻāϰāĻžāϰ āĻāĻā§āĨ¤ | GROUP BY āĻāϰāĻžāϰ āĻĒāϰā§āĨ¤ |
| āĻāĻžāĻā§ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰā§? | āϏāĻžāϧāĻžāϰāĻŖ āϰ⧠(Row) āĻā§āĨ¤ | āĻā§āϰā§āĻĒ āĻŦāĻž āĻ ā§āϝāĻžāĻā§āϰāĻŋāĻā§āĻ (SUM, AVG) āĻā§āĨ¤ |
| āĻ ā§āϝāĻžāĻā§āϰāĻŋāĻā§āĻ āĻĢāĻžāĻāĻļāύ? | āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§ āύāĻžāĨ¤ | āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻ (āĻŦāĻž āĻāĻŽāύ)āĨ¤ |
| āĻāĻžāĻ | āĻ āĻĒā§āϰā§ā§āĻāύā§āϝāĻŧ āϰ⧠āĻāĻā§āĻ āĻŦāĻžāĻĻ āĻĻā§ā§āĨ¤ | āĻā§āϰā§āĻĒ āĻāϰāĻžāϰ āĻĒāϰ āĻļāϰā§āϤ āĻā§āĻ āĻāϰā§āĨ¤ |
āϏāĻāĻā§āĻāĻž: āĻāĻāĻ āϧāϰāĻŖā§āϰ āĻā§āϝāĻžāϞ⧠āĻāĻā§ āĻāĻŽāύ āϰ⧠āĻā§āϞā§āĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰ⧠āĻāĻāĻāĻŋ āϏāĻžāĻŽāĻžāϰāĻŋ (Summary) āϰā§āĻāĻžāϞā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāĨ¤
COUNT() : āĻāϤāĻā§āϞ⧠āĻāĻā§?SUM() : āĻŽā§āĻ āĻāϤ?AVG() : āĻā§ āĻāϤ?MAX() / MIN() : āϏāĻŦāĻā§ā§ā§ āĻŦā§ āĻŦāĻž āĻā§āĻ āĻāϤ?