kunci entitas
Kunci entitas adalah properti atau sekumpulan properti dari jenis entitas yang digunakan untuk menentukan identitas. Properti yang membentuk kunci entitas dipilih pada waktu desain. Nilai properti kunci entitas harus mengidentifikasi instans jenis entitas secara unik dalam entitas yang ditetapkan saat run time. Properti yang membentuk kunci entitas harus dipilih untuk menjamin keunikan instans dalam kumpulan entitas.
Berikut ini adalah persyaratan untuk sekumpulan properti menjadi kunci entitas:
Tidak ada dua kunci entitas dalam set entitas yang dapat identik. Artinya, untuk dua entitas dalam kumpulan entitas, nilai untuk semua properti yang merupakan kunci tidak boleh sama. Namun, beberapa (tetapi tidak semua) dari nilai yang membentuk kunci entitas bisa sama.
Kunci entitas harus terdiri dari sekumpulan properti jenis yang tidak dapat diubah ke null, tidak dapat diubah, dan primitif.
Properti yang membentuk kunci entitas untuk jenis entitas tertentu tidak dapat berubah. Anda tidak dapat mengizinkan lebih dari satu kunci entitas yang mungkin untuk jenis entitas tertentu; kunci pengganti tidak didukung.
Saat entitas terlibat dalam hierarki pewarisan, entitas akar harus berisi semua properti yang membentuk kunci entitas, dan kunci entitas harus ditentukan pada jenis entitas akar. Untuk mengetahui informasi selengkapnya, lihat Model Data Entitas: Pewarisan.
Contoh
Diagram berikut menunjukkan model konseptual dengan tiga jenis entitas: Book
, Publisher
, dan Author
. Properti dari setiap jenis entitas yang membentuk kunci entitasnya ditandai dengan "(Key)". Perhatikan bahwa jenis entitas Author
memiliki kunci entitas yang terdiri dari dua properti, Name
dan Address
.
ADO.NET Entity Framework menggunakan bahasa khusus domain (DSL) yang disebut bahasa definisi skema konseptual (CSDL) untuk mendefinisikan model konseptual. CSDL di bawah ini menentukan jenis entitas Book
yang ditunjukkan pada diagram di atas. Perhatikan bahwa kunci entitas ditentukan dengan mereferensikan properti ISBN
dari jenis entitas.
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
Properti ISBN
adalah pilihan yang baik untuk kunci entitas karena Nomor Buku Standar Internasional (ISBN) secara unik mengidentifikasi buku.
CSDL di bawah ini menentukan jenis entitas Author
yang ditunjukkan pada diagram di atas. Perhatikan bahwa kunci entitas terdiri dari dua properti, Name
dan Address
.
<EntityType Name="Author">
<Key>
<PropertyRef Name="Name" />
<PropertyRef Name="Address" />
</Key>
<Property Type="String" Name="Name" Nullable="false" />
<Property Type="String" Name="Address" Nullable="false" />
<NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
FromRole="Author" ToRole="Book" />
</EntityType>
Menggunakan Name
dan Address
untuk kunci entitas adalah pilihan yang wajar, karena dua penulis dengan nama yang sama tidak mungkin hidup di alamat yang sama. Namun, pilihan untuk kunci entitas ini tidak benar-benar menjamin kunci entitas unik dalam kumpulan entitas. Menambahkan properti, seperti AuthorId
, yang dapat digunakan untuk mengidentifikasi penulis secara unik akan direkomendasikan dalam kasus ini.