ฉันไม่สามารถเข้าใจความแตกต่างได้อย่างเต็มที่ คุณสามารถอธิบายแนวคิดและใช้ตัวอย่างโลกแห่งความจริงได้หรือไม่?
ฉันไม่สามารถเข้าใจความแตกต่างได้อย่างเต็มที่ คุณสามารถอธิบายแนวคิดและใช้ตัวอย่างโลกแห่งความจริงได้หรือไม่?
คำตอบ:
สัมพันธ์ระบุคือเมื่อการดำรงอยู่ของแถวในตารางเด็กขึ้นอยู่กับแถวในตารางผู้ปกครอง เรื่องนี้อาจจะทำให้เกิดความสับสนเพราะมันของการปฏิบัติร่วมกันในวันนี้ที่จะสร้าง pseudokey สำหรับตารางเด็ก แต่ไม่ได้ทำให้ต่างประเทศที่สำคัญในส่วนที่แม่ของคีย์หลักของเด็ก อย่างเป็นทางการวิธี "สิทธิ" ในการทำเช่นนี้คือการทำให้กุญแจต่างประเทศของคีย์หลักของเด็ก แต่ความสัมพันธ์เชิงตรรกะคือลูกไม่สามารถอยู่ได้โดยปราศจากผู้ปกครอง
ตัวอย่าง: A Person
มีหมายเลขโทรศัพท์หนึ่งหมายเลขขึ้นไป Person
ถ้าพวกเขามีหมายเลขโทรศัพท์เพียงหนึ่งเราก็สามารถเก็บไว้ในคอลัมน์ของ เนื่องจากเราต้องการสนับสนุนหมายเลขโทรศัพท์หลายหมายเลขเราจึงสร้างตารางที่สองPhoneNumbers
ซึ่งมีคีย์หลักรวมถึงการperson_id
อ้างอิงPerson
ตาราง
เราอาจคิดว่าหมายเลขโทรศัพท์เป็นของบุคคลแม้ว่าจะมีการจำลองเป็นแอตทริบิวต์ของตารางแยกต่างหาก นี่เป็นเงื่อนงำที่ชัดเจนว่านี่คือความสัมพันธ์ที่ระบุ (แม้ว่าเราจะไม่รวมperson_id
อยู่ในคีย์หลักของPhoneNumbers
)
ความสัมพันธ์ไม่ได้ระบุคือเมื่อคีย์หลักคุณลักษณะของผู้ปกครองจะต้องไม่กลายเป็นคีย์หลักคุณลักษณะของเด็ก เป็นตัวอย่างที่ดีของที่นี่คือตารางการค้นหาเช่นต่างประเทศที่สำคัญในการอ้างอิงคีย์หลักของ Person.state
เป็นตารางเด็กด้วยความเคารพ แต่ไม่มีการระบุแถวในโดยแอตทริบิวต์ของมัน คือไม่ได้เป็นส่วนหนึ่งของคีย์หลักของStates.state
Person
States
Person
state
state
Person
ความสัมพันธ์ที่ไม่ระบุตัวตนอาจเป็นทางเลือกหรือจำเป็นซึ่งหมายความว่าคอลัมน์คีย์ภายนอกอนุญาตให้ NULL หรือไม่อนุญาต NULL ตามลำดับ
ดูคำตอบของฉันที่ยังสับสนเกี่ยวกับการระบุและความสัมพันธ์ที่ไม่ระบุตัวตน
Beds
ตารางสำหรับเตียงทั้งหมดในอาคารเฉพาะได้โดยไม่ต้องเข้าร่วมใด ๆ
user_id
ควรเป็นคีย์หลักด้วยตัวเองและupdated_by
ไม่ได้เป็นส่วนหนึ่งของคีย์หลักหลายคอลัมน์
มีคำอธิบายอื่นจากโลกแห่งความเป็นจริง:
หนังสือเป็นของเจ้าของและเจ้าของสามารถเป็นเจ้าของหนังสือหลายเล่มได้ แต่หนังสือเล่มนี้สามารถดำรงอยู่ได้โดยปราศจากเจ้าของและความเป็นเจ้าของสามารถเปลี่ยนจากเจ้าของรายหนึ่งเป็นอีกคนได้ ความสัมพันธ์ระหว่างหนังสือกับเจ้าของเป็นความสัมพันธ์ที่ไม่ระบุตัวตน
อย่างไรก็ตามหนังสือเล่มหนึ่งเขียนขึ้นโดยผู้แต่งและผู้แต่งสามารถเขียนหนังสือหลายเล่มได้ แต่หนังสือเล่มนี้จะต้องเขียนโดยผู้แต่ง - มันไม่มีอยู่จริงถ้าไม่มีผู้แต่ง ดังนั้นความสัมพันธ์ระหว่างหนังสือกับผู้แต่งจึงเป็นความสัมพันธ์ที่ระบุ
PK(Book.id, Book.person_id)
ว่าการใช้ความสัมพันธ์ที่แข็งแกร่งเพราะ
the Identifying relationship
!!! ใช่หนังสือไม่สามารถเขียนได้หากไม่มีผู้แต่ง แต่เขตข้อมูลผู้เขียนในตารางหนังสือไม่ได้ระบุแถวหนังสือ !!!
คำตอบของ Billนั้นถูกต้อง แต่ก็น่าตกใจที่เห็นว่าในบรรดาคำตอบอื่น ๆ นั้นไม่มีใครชี้ให้เห็นถึงแง่มุมที่สำคัญที่สุด
ได้มีการกล่าวซ้ำแล้วซ้ำอีกว่าในและการระบุความสัมพันธ์ที่เด็กไม่สามารถอยู่ได้โดยปราศจากผู้ปกครอง (เช่นผู้ใช้287724 ) นี่เป็นเรื่องจริง แต่ก็พลาดประเด็นไปอย่างสิ้นเชิง มันจะเพียงพอสำหรับคีย์ต่างประเทศที่จะไม่เป็นโมฆะเพื่อให้บรรลุนี้ ไม่จำเป็นต้องเป็นส่วนหนึ่งของคีย์หลัก
ดังนั้นนี่คือเหตุผลที่แท้จริง:
วัตถุประสงค์ของการระบุความสัมพันธ์คือกุญแจต่างประเทศไม่สามารถเปลี่ยนแปลงได้เพราะมันเป็นส่วนหนึ่งของคีย์หลัก ... ดังนั้นจึงระบุ !!!
การระบุความสัมพันธ์ระบุว่าวัตถุลูกไม่สามารถอยู่ได้โดยไม่ต้องวัตถุแม่
ความสัมพันธ์ที่ไม่ได้ระบุระบุจะระบุความสัมพันธ์ปกติระหว่างวัตถุ, 1: 1 หรือ 1: n ความเป็นเชิงการนับ
สามารถระบุความสัมพันธ์ที่ไม่ระบุตัวตนเป็นทางเลือกโดยไม่จำเป็นต้องมีพาเรนต์หรือบังคับให้มีการบังคับให้ผู้ปกครองต้องมีการตั้งค่าความสำคัญของตาราง ...
House
มีWall
s คุณลบบ้านและไม่มีผนัง แต่กำแพงเป็นของบ้านเท่านั้น ดังนั้นการสร้างความสัมพันธ์ที่ดีจะไม่ได้ผล: PK(Wall.id, House.id)
จะช่วยให้คุณสามารถแทรกโมเดลเข้ากับกำแพงเดียวกันกับบ้านหลังอื่นได้
นี่คือคำอธิบายที่ดี:
ความสัมพันธ์ระหว่างสองหน่วยงานอาจจำแนกได้ว่าเป็น "การระบุ" หรือ "การไม่ระบุตัวตน" การระบุความสัมพันธ์มีอยู่เมื่อคีย์หลักของเอนทิตีหลักรวมอยู่ในคีย์หลักของเอนทิตีรอง ในทางกลับกันความสัมพันธ์ที่ไม่มีการระบุจะมีอยู่เมื่อคีย์หลักของเอนทิตีหลักรวมอยู่ในเอนทิตีรอง แต่ไม่รวมเป็นส่วนหนึ่งของคีย์หลักของเอนทิตีรอง นอกจากนี้ความสัมพันธ์ที่ไม่ระบุตัวตนอาจจำแนกได้ว่าเป็น "ข้อบังคับ" หรือ "ไม่บังคับ" ความสัมพันธ์ที่ไม่ระบุตัวตนที่บังคับมีอยู่เมื่อค่าในตารางลูกไม่สามารถเป็นโมฆะ ในทางกลับกันความสัมพันธ์ที่ไม่ระบุตัวตนที่ไม่บังคับมีอยู่เมื่อค่าในตารางลูกสามารถเป็นโมฆะ
http://www.sqlteam.com/article/database-design-and-modeling-fundamentals
นี่คือตัวอย่างง่ายๆของความสัมพันธ์ที่ระบุ:
Parent
------
ID (PK)
Name
Child
-----
ID (PK)
ParentID (PK, FK to Parent.ID) -- notice PK
Name
นี่คือความสัมพันธ์ที่ไม่ระบุตัวตนที่สอดคล้องกัน:
Parent
------
ID (PK)
Name
Child
-----
ID (PK)
ParentID (FK to Parent.ID) -- notice no PK
Name
คำตอบของ user287724ให้ตัวอย่างต่อไปนี้ของความสัมพันธ์หนังสือและผู้แต่ง:
อย่างไรก็ตามผู้แต่งเขียนหนังสือเล่มหนึ่งและผู้แต่งสามารถเขียนหนังสือหลายเล่มได้ แต่หนังสือเล่มนี้จะต้องเขียนโดยผู้แต่งไม่สามารถมีอยู่ได้หากไม่มีผู้แต่ง ดังนั้นความสัมพันธ์ระหว่างหนังสือและผู้แต่งจึงเป็นความสัมพันธ์ที่ระบุ
นี้เป็นตัวอย่างที่ทำให้เกิดความสับสนมากและแน่นอนไม่ได้เป็นตัวอย่างที่ถูกต้องidentifying relationship
สำหรับ
ใช่book
ไม่สามารถเขียนได้โดยไม่ต้องมีอย่างน้อยหนึ่งauthor
แต่author
(มันสำคัญต่างประเทศ) ของbook
ถูกไม่ได้การระบุbook
ในbooks
ตาราง!
คุณสามารถลบauthor
(FK) จากbook
แถวและยังสามารถระบุแถวหนังสือโดยข้อมูลอื่น ๆ บาง ( ISBN
, ID
... ฯลฯ ) แต่ไม่เขียนของหนังสือเล่มนี้ !!
ฉันคิดว่าตัวอย่างที่ถูกต้องของ a identifying relationship
คือความสัมพันธ์ระหว่าง (ตารางผลิตภัณฑ์) และ a (ตารางรายละเอียดผลิตภัณฑ์เฉพาะ)1:1
products table
+------+---------------+-------+--------+
|id(PK)|Name |type |amount |
+------+---------------+-------+--------+
|0 |hp-laser-510 |printer|1000 |
+------+---------------+-------+--------+
|1 |viewsonic-10 |screen |900 |
+------+---------------+-------+--------+
|2 |canon-laser-100|printer|200 |
+------+---------------+-------+--------+
printers_details table
+--------------+------------+---------+---------+------+
|Product_ID(FK)|manufacturer|cartridge|color |papers|
+--------------+------------+---------+---------+------+
|0 |hp |CE210 |BLACK |300 |
+--------------+------------+---------+---------+------+
|2 |canon |MKJ5 |COLOR |900 |
+--------------+------------+---------+---------+------+
* please note this is not real data
ในตัวอย่างนี้Product_ID
ในprinters_details
ตารางถือว่าเป็น FK อ้างอิงproducts.id
ตารางและยัง PKในprinters_details
ตารางนี่คือความสัมพันธ์ที่ระบุเพราะProduct_ID
(FK) ในตารางเครื่องพิมพ์จะระบุแถวภายในตารางลูกเราไม่สามารถลบproduct_id
จากตารางเด็กเพราะเราไม่สามารถระบุแถวใด ๆ มากขึ้นเพราะเราหายไปมันเป็นคีย์หลัก
หากคุณต้องการที่จะวางไว้ใน 2 บรรทัด:
ความสัมพันธ์ที่ระบุคือความสัมพันธ์เมื่อ FK ในตารางลูกถูกพิจารณาว่าเป็น PK (หรือตัวระบุ) ในตารางลูกในขณะที่ยังคงอ้างอิงตารางแม่
อีกตัวอย่างหนึ่งคือเมื่อคุณมี 3 ตาราง (นำเข้า - ผลิตภัณฑ์ - ประเทศ) ในการนำเข้าและส่งออกสำหรับฐานข้อมูลบางประเทศ
import
ตารางเป็นเด็กที่มีเขตข้อมูลเหล่านี้ ( product_id
(FK) ที่country_id
(FK) ปริมาณการนำเข้าที่ราคาหน่วยที่นำเข้าทางของการขนส่ง (อากาศทะเล)) ที่
we may use the (
product_id , the
country_id`) เพื่อระบุแต่ละ แถวของการนำเข้า "ถ้าพวกเขาทั้งหมดในปีเดียวกัน" ที่นี่ทั้งสองคอลัมน์สามารถเขียนคีย์หลักร่วมกันในตารางลูก (นำเข้า) และยังอ้างอิงถึงตารางแม่
ได้โปรดฉันมีความสุขในที่สุดฉันก็เข้าใจแนวคิดของidentifying relationship
และnon identifying relationship
ดังนั้นโปรดอย่าบอกฉันว่าฉันผิดกับการลงคะแนนเสียงทั้งหมดเหล่านี้สำหรับตัวอย่างที่ไม่ถูกต้องอย่างสมบูรณ์
ใช่มีเหตุผลที่หนังสือไม่สามารถเขียนได้หากไม่มีผู้แต่ง แต่สามารถระบุได้โดยที่ไม่มีผู้แต่งหนังสือจริงๆแล้วมันไม่สามารถระบุได้กับผู้แต่ง!
คุณสามารถลบผู้แต่งได้ 100% จากแถวหนังสือและยังสามารถระบุหนังสือได้! .
ความสัมพันธ์ที่ไม่ได้ระบุ
ความสัมพันธ์ที่ไม่ระบุตัวตนหมายความว่าเด็กมีความสัมพันธ์กับผู้ปกครอง แต่สามารถระบุได้ด้วยตนเอง
PERSON ACCOUNT
====== =======
pk(id) pk(id)
name fk(person_id)
balance
ความสัมพันธ์ระหว่าง ACCOUNT และ PERSON ไม่มีการระบุ
การระบุความสัมพันธ์
การระบุความสัมพันธ์หมายความว่าผู้ปกครองจำเป็นต้องให้ข้อมูลประจำตัวกับเด็ก เด็กมี แต่เพียงผู้เดียวเนื่องจากผู้ปกครอง
ซึ่งหมายความว่า foreign key เป็นคีย์หลักเช่นกัน
ITEM LANGUAGE ITEM_LANG
==== ======== =========
pk(id) pk(id) pk(fk(item_id))
name name pk(fk(lang_id))
name
ความสัมพันธ์ระหว่าง ITEM_LANG และ ITEM กำลังระบุ และระหว่าง ITEM_LANG และ LANGUAGE ด้วย
หากคุณพิจารณาว่าควรลบไอเท็มลูกออกเมื่อลบพาเรนต์ดังนั้นจึงเป็นความสัมพันธ์ที่ระบุ
หากรายการเด็กควรถูกเก็บไว้แม้ว่าผู้ปกครองจะถูกลบแล้วมันเป็นความสัมพันธ์ที่ไม่ระบุตัวตน
ตัวอย่างเช่นฉันมีฐานข้อมูลการฝึกอบรมที่มีผู้ฝึกอบรมการฝึกอบรมประกาศนียบัตรและการฝึกอบรม:
ควรลบเฉพาะช่วงการฝึกอบรมหากหนึ่งในผู้ฝึกอบรมที่เกี่ยวข้องการฝึกอบรมหรือประกาศนียบัตรถูกลบ
การระบุความสัมพันธ์หมายถึงเอนทิตีลูกขึ้นอยู่กับการมีอยู่ของเอนทิตีของแม่ ตัวอย่างตารางบัญชีบุคคลตารางและ personaccount ตารางบัญชีบุคคลจะถูกระบุโดย existance ของบัญชีและตารางบุคคลเท่านั้น
ความสัมพันธ์ที่ไม่ระบุตัวตนหมายถึงตารางลูกไม่ได้ระบุโดยการมีอยู่ของตัวอย่างตารางหลักที่มีตารางเป็นบัญชีและตาราง account.accounttype ไม่ได้ระบุว่ามีอยู่ของตารางบัญชี
เช่นเดียวกับที่อธิบายไว้อย่างดีในลิงก์ด้านล่างความสัมพันธ์ที่ระบุนั้นค่อนข้างคล้ายกับประเภทเอนทิตีที่อ่อนแอกับความสัมพันธ์กับผู้ปกครองในโมเดลแนวคิดเชิง ER CAD สไตล์ UML สำหรับการสร้างแบบจำลองข้อมูลไม่ได้ใช้สัญลักษณ์หรือแนวคิด ER และประเภทของความสัมพันธ์คือ: การระบุการไม่ระบุตัวตนและไม่เฉพาะเจาะจง
การระบุตัวตนคือความสัมพันธ์ของผู้ปกครอง / เด็กที่เด็กเป็นนิติบุคคลที่อ่อนแอ (แม้แต่ในรูปแบบ ER ดั้งเดิมที่เรียกว่าการระบุความสัมพันธ์) ซึ่งไม่มีคีย์หลักที่แท้จริงด้วยคุณสมบัติของตัวเองและดังนั้นจึงไม่สามารถระบุเอกลักษณ์ของตนเองได้ . การเข้าถึงตารางเด็กทุกครั้งในแบบจำลองทางกายภาพจะขึ้นอยู่กับ (รวมถึงความหมาย) ในคีย์หลักของผู้ปกครองซึ่งจะกลายเป็นส่วนหนึ่งหรือทั้งหมดของคีย์หลักของเด็ก (รวมถึงการเป็นคีย์ต่างประเทศ) โดยทั่วไปทำให้คีย์ผสม ด้านเด็ก คีย์ที่มีอยู่ในที่สุดของตัวเด็กเองนั้นเป็นเพียงการหลอกหรือเป็นบางส่วนเท่านั้นซึ่งไม่เพียงพอที่จะระบุอินสแตนซ์ใด ๆ ของ Entity หรือ Entity Set ชนิดนั้นโดยไม่ต้องใช้ PK ของผู้ปกครอง
ความสัมพันธ์ที่ไม่ระบุตัวตนคือความสัมพันธ์ปกติ (บางส่วนหรือทั้งหมด) ของชุดเอนทิตี้อิสระที่สมบูรณ์ซึ่งอินสแตนซ์ไม่ได้ขึ้นอยู่กับคีย์หลักของกันและกันที่จะระบุเฉพาะแม้ว่าพวกเขาอาจต้องการคีย์ต่างประเทศสำหรับความสัมพันธ์บางส่วนหรือทั้งหมด เป็นคีย์หลักของเด็ก เด็กมีคีย์หลักของตัวเอง ID ผู้ปกครอง ทั้งอิสระ ทั้งนี้ขึ้นอยู่กับความสำคัญของความสัมพันธ์, PK ของหนึ่งไปเป็น FK ไปที่อื่น ๆ (ด้าน N) และถ้าบางส่วนสามารถเป็นโมฆะถ้ารวมจะต้องไม่เป็นโมฆะ แต่ในความสัมพันธ์เช่นนี้ FK จะไม่มีวันเป็น PK ของเด็กเช่นเดียวกับเมื่อความสัมพันธ์ที่ระบุเป็นกรณี
http://docwiki.embarcadero.com/ERStudioDA/XE7/en/Creating_and_Editing_Relationships
คุณลักษณะที่ย้ายจากผู้ปกครองไปยังเด็กช่วยระบุเด็ก1คนหรือไม่?
โปรดทราบว่าการระบุตัวตนหมายถึงการพึ่งพาอาศัย แต่ไม่ใช่วิธีอื่น ๆ FK ที่ไม่ใช่ค่า NULL ทั้งหมดหมายความว่าเด็กไม่สามารถอยู่ได้โดยไม่มีผู้ปกครอง แต่เพียงอย่างเดียวไม่ได้ระบุความสัมพันธ์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ (และตัวอย่างบางส่วน) ให้ดูที่ส่วน "การระบุความสัมพันธ์" ของที่คู่มือวิธีการเออร์วิน
ป.ล. ฉันรู้ว่าฉัน (มาก) ไปงานปาร์ตี้ แต่ฉันรู้สึกว่าคำตอบอื่น ๆ นั้นไม่ถูกต้องทั้งหมด (กำหนดไว้ในแง่ของการพึ่งพาอาศัยอยู่แทนการพึ่งพาตัวตน) หรือคดเคี้ยว หวังว่าคำตอบนี้จะให้ความชัดเจนมากขึ้น ...
1 FK ของเด็กเป็นส่วนหนึ่งของคีย์หลักของเด็กหรือข้อ จำกัด UNIQUE (ไม่ใช่แบบ NULL)
ตัวอย่างที่ดีมาจากการประมวลผลคำสั่ง โดยทั่วไปคำสั่งซื้อจากลูกค้าจะมีหมายเลขคำสั่งซื้อที่ระบุคำสั่งซื้อข้อมูลบางอย่างที่เกิดขึ้นหนึ่งครั้งต่อการสั่งซื้อเช่นวันที่สั่งซื้อและรหัสลูกค้าและชุดรายการโฆษณา รายการโฆษณาแต่ละรายการมีหมายเลขรายการที่ระบุรายการโฆษณาภายในคำสั่งซื้อผลิตภัณฑ์ที่สั่งซื้อปริมาณของผลิตภัณฑ์นั้นราคาของผลิตภัณฑ์และจำนวนเงินสำหรับรายการโฆษณาซึ่งสามารถคำนวณได้โดยการคูณปริมาณด้วย ราคา.
หมายเลขที่ระบุรายการโฆษณาจะระบุเฉพาะในบริบทของคำสั่งซื้อเดียว รายการโฆษณาแรกในทุกคำสั่งซื้อคือหมายเลขรายการ "1" ข้อมูลเฉพาะตัวที่สมบูรณ์ของรายการโฆษณาคือหมายเลขรายการพร้อมกับหมายเลขคำสั่งซื้อที่เป็นส่วนหนึ่ง
ความสัมพันธ์ย่อยของผู้ปกครองระหว่างคำสั่งซื้อและรายการโฆษณาจึงเป็นความสัมพันธ์ที่ระบุ แนวคิดที่เกี่ยวข้องอย่างใกล้ชิดในการสร้างแบบจำลอง ER ไปด้วยชื่อ "subentity" โดยที่รายการโฆษณานั้นเป็นรายการย่อยของคำสั่งซื้อ โดยทั่วไปแล้ว subentity จะมีความสัมพันธ์ระหว่างการระบุตัวตนกับผู้ปกครองลูกกับหน่วยงานที่อยู่ภายใต้
ในการออกแบบฐานข้อมูลแบบคลาสสิกคีย์หลักของตาราง LineItems จะเป็น (OrderNumber, ItemNumber) นักออกแบบของวันนี้บางคนจะให้ ItemID แยกเป็นไอเท็มซึ่งทำหน้าที่เป็นคีย์หลักและถูกสร้างขึ้นใหม่โดย DBMS ฉันขอแนะนำการออกแบบคลาสสิกในกรณีนี้
สมมติว่าเรามีตารางเหล่านั้น:
user
--------
id
name
comments
------------
comment_id
user_id
text
ความสัมพันธ์ระหว่างทั้งสองตารางจะระบุความสัมพันธ์ เนื่องจากความคิดเห็นสามารถเป็นเจ้าของได้เท่านั้นไม่ใช่ผู้ใช้รายอื่น ตัวอย่างเช่น. ผู้ใช้แต่ละคนมีความคิดเห็นของตัวเองและเมื่อผู้ใช้ถูกลบความคิดเห็นของผู้ใช้นี้ก็ควรจะถูกลบ
การระบุความสัมพันธ์อยู่ระหว่างสองหน่วยงานที่แข็งแกร่ง ความสัมพันธ์ที่ไม่ได้ระบุอาจไม่ใช่ความสัมพันธ์ระหว่างเอนทิตีที่รัดกุมกับเอนทิตีที่อ่อนแอ อาจมีสถานการณ์ที่เด็ก ๆ มีคีย์หลักอยู่ แต่การมีอยู่ของเอนทิตีอาจขึ้นอยู่กับเอนทิตีหลัก
ตัวอย่างเช่น: ความสัมพันธ์ระหว่างผู้ขายและหนังสือที่ขายโดยผู้ขายอาจมีอยู่ที่ผู้ขายอาจมีคีย์หลักของตัวเอง แต่เอนทิตีของมันจะถูกสร้างขึ้นเฉพาะเมื่อขายหนังสือ
อ้างอิงจาก Bill Karwin