Sangat menyenangkan bahwa Anda meluangkan waktu untuk memahami, mengklasifikasikan dan memodelkan data yang Anda hadapi karena, dari pengalaman pribadi saya, semua ini membuat seluruh proses pengembangan lebih mudah dan sangat fleksibel untuk perubahan di masa depan. Dan saya cukup yakin bahwa Anda juga sudah mengetahui hal ini.
Model data awal dan asumsi aturan bisnis
Saya mendefinisikan daftar aturan bisnis yang telah saya asumsikan setelah membaca pertanyaan Anda dan memeriksa dengan cermat diagram Anda, untuk menjelaskan pemahaman saya tentang spesifikasi Anda. Setelah mendefinisikan daftar tersebut, saya mendapatkan model data IDEF1X [1] yang saya putuskan untuk unggah sebagai dokumen .PDF di platform eksternal (Dropbox), karena karena formatnya model data ini tidak cocok dengan gambar yang disematkan. Kedua instrumen ini akan berguna sebagai referensi untuk beberapa poin penting yang saya sebutkan di bawah ini di bagian berjudul Aspek untuk diselesaikan agar dapat terus bergerak maju .
Pertama, ini ...
Karena hanya itu, pendahuluan, menganggapnya sebagai sarana membantu kami untuk mencapai model data akhir yang diinginkan.
Aturan bisnis yang diasumsikan
Model data awal tersebut berasal dari kumpulan aturan bisnis (disimpulkan dari pertanyaan Anda) yang akan saya sebutkan sebagai berikut:
Organisasi dan profil
Catatan yang Profilesaat ini dipahami sebagai sinonim untuk Person.
- An
Organizationadalah teman satu-ke-banyak Profiles .
- An
Organizationadalah teman satu-ke-banyak Organizations .
- An
Organizationadalah anggota satu-ke-banyak Organizations .
- A
Profileadalah anggota satu-ke-banyakOrganizations .
- A
Profileadalah teman satu-ke-banyak Profiles .
- A
Profileadalah anggota satu-ke-banyak Profiles .
Lokasi dan alamat
- Sebuah
Organizationmemiliki satu-ke-banyak Locations .
- A
Locationdiklasifikasikan berdasarkan satu ke banyak LocationTypes ( hanya satu pada titik waktu tertentu).
- A
Locationmungkin memiliki satu-ke-banyak Addresses ( satu Physical , satu untuk Shipping, satu untuk Billing, atau satu yang melayani semua tujuan tersebut, atau satu yang menggabungkan dua tujuan dan yang lain hanya melayani satu dari mereka).
Sebuah Addressdapat disimpan oleh satu-ke-banyak Profiles atau, dengan kata lain, sebuah Profileterus satu-ke-banyak Addresses .
Sebuah spesifik Addressdapat digunakan oleh satu-ke-banyak Profiles (melayani sebagai Physicaluntuk satu Profile , yang digunakan untuk Billingoleh satu yang berbeda , dll). Jadi, sebuah Addresskarya serupa untuk Locationsdan Profiles.
- Jadi, seorang individu
Addressdapat, pada saat yang sama , bertipe Physical, Shipping dan Billing .
Lokasi dan peran
- A
Locationmembuka satu-ke-banyak Roles .
- A
Roledapat dilakukan dalam satu-ke-banyak Locations .
- A
Profile(setelah ditetapkan sebagai Membera Organization) dapat melakukan satu-ke-banyak Roles , dalam satu-ke-banyak Locations (tetapi hanya satu spesifik Roledi masing-masing Locationpada titik waktu tertentu, yaitu, tidak pernah dua atau lebih Roles pada waktu yang sama ).
Aspek yang harus diselesaikan agar terus bergerak maju
Untuk terus maju dalam resolusi model data Anda, berikut adalah daftar poin yang relevan, setelah kami mengatasinya, akan membantu kami untuk mencapai tujuan ini:
Saya berasumsi bahwa istilah Profiledalam konteks Anda memiliki makna yang serupa (atau sama) dengan Person, tetapi mungkin sedikit berbeda. Dengan cara ini, akankah Anda mengatakan bahwa, dalam skenario Anda, entitas Organizationdan Personmerupakan subtipe Profile?
Dapatkah Profile(atau Person) sendiri satu-ke-banyak EmailAddresses , atau merupakan Profile(atau Person) tetap untuk tepat satu EmailAddress ?
Apakah Anda ingin memberikan kemungkinan untuk Organizationdihubungi melalui Telephonedan Email, atau Anda ingin membatasi itu hanya mungkin untuk Profile(atau Person)?
Saya berasumsi bahwa a Locationdiperbaiki ke salah Address satu tipe Physical, apakah ini benar?
Apakah mungkin untuk Locationdibagikan oleh satu-ke-banyak berbeda Organizations atau , jika tidak, Locationdapat dimiliki hanya oleh satuOrganization ?
Anda telah menyatakan melalui komentar bahwa fakta menjadi Memberdan a Friendadalah sama. Seperti yang dapat Anda lihat dalam model data pendahuluan yang saya usulkan, saya mengikuti Anda spesifikasi asli dan menggambarkan semua kemungkinan kombinasi keanggotaan dan persahabatan antara Organizationdan Profile(atau Person) di entitas yang berbeda karena saya pikir itu dapat membantu dalam upaya menentukan yang terbaik yang mungkin. struktur untuk bagian skenario Anda. Dalam arti ini:
- Saya berasumsi bahwa pernyataan tersebut
an Organization is a Member of another Organizationmemiliki efek yang berbeda dari pernyataan yang a Profile (or Person) is a Member of an Organizationberkaitan dengan entitas yang dipanggil Location.
- Seperti yang Anda lihat dalam model data, saya berpikir bahwa
Roledari Ownerhanya berlaku untuk Organizationdan, bagi saya, berlaku Rolesuntuk Profile(atau Person), di dalam Locationadalah Admindan Member. Apa yang Anda pikirkan tentang semua ini? Karena Anda berhubungan langsung dengan aturan bisnis yang berlaku untuk situasi Anda, Anda perlu memberi tahu saya jika asumsi saya benar.
Bisakah Profile(atau Person) bermain berbeda Rolesdi dalam yang sama Location? yaitu, dapatkah Person, pada saat yang sama, Admindan juga Memberdari yang sama Location? Apa aturan dalam hal ini?
Saya pikir hal yang sama Profile(atau Person) dapat bermain berbeda Rolesdi berbeda Locations. Misalnya: Yang spesifik Profile(atau Person) adalah "Admin" di Location"1", dan yang sama ini Profile(atau Person) adalah " Member" di Location"2", pada saat yang sama. Apakah saya benar?
Apakah mungkin bagi orang tertentu Locationuntuk memiliki perbedaan LocationTypespada saat yang sama, atau apakah seseorang Locationditetapkan untuk memegang tepat satu LocationType?
Apakah atribut tersebut Organization.Websitemewakili alamat situs web organisasi tertentu, seperti "dba.stackexchange.com"?
Jika Profile"1" (dipahami sebagai Person) adalah Member(atau Friend) dari Profile"2", apakah mungkin bagi Profile"1" untuk melaksanakan suatu Roledalam yang Locationdimiliki oleh Profile"2"? Saya menganggap bahwa skenario seperti itu hanya berlaku untuk hubungan antara Organizationdan Member Person, jadi apa yang Anda pikirkan?
Dengan cara yang sama, jika Organization"1" adalah Member(atau Friend) dari Organization"2", apakah mungkin bagi Organization"1" untuk melakukan a Roledi Locationmilik Organization"2"? Sekali lagi, saya pikir skenario semacam ini hanya berlaku untuk hubungan antara a Organizationdan a Member Person, apakah ini benar?
Dalam hal ini - ketika saya menulis pertanyaan ini - saya pikir masuk akal untuk mengatakan bahwa hanya ada tiga jenis hubungan yang melibatkan Organizationsdan Persons, dan kita dapat mendefinisikan:
- (a) Hubungan antara a
Organizationdan a Personsebagai " Membership".
- (B) Hubungan antara a
Persondan yang lain berbeda Personsebagai " Friendhip".
- (c) Kami belum menemukan nama yang bermakna untuk menggambarkan hubungan antara individu
Organizationdan orang lain yang berbeda Organization.
- Jadi, beri tahu saya pendapat Anda tentang (a), (b) dan (c).
Apakah mungkin untuk Organizationmenjadi Friend(atau Member) dari satu-ke-banyak yang berbeda Organizationspada saat yang sama? Atau hanya mungkin bagi seseorang Organizationuntuk hanya memiliki hubungan dengan orang yang berbeda secara eksklusifOrganization?
Model data berturut-turut menggambarkan kemajuan pertama
Memperhatikan tanggapan dan resolusi Anda terhadap aspek-aspek yang tertunda yang telah saya sebutkan di atas, saya telah membuat yang berikut ...
Meskipun saya belum merasa cukup nyaman dengan itu, model data baru ini mengungkapkan aturan bisnis berikut:
- Sebuah
Profileadalah salah seorang Organization atau sebuah Person. [2]
- A
Profilemungkin merupakan teman persembahan satu-ke-banyak FriendProfiles , dan Profilemungkin merupakan teman satu-ke-banyak FriendProfiles . [3]
- A
Locationdapat terdiri dari satu-ke-banyak Locations . [4]
Jawaban untuk komentar spesifik Anda selanjutnya
Sangat menarik bagi saya untuk mencatat / memperparah pemisahan kekhawatiran [mis. LocationAddress dan ProfileAddress] - karena saya jelas ingin bergegas dan menahan mereka semua tanpa hubungan yang benar [lucu, itu tidak terasa benar dengan ERD asli saya].
Ya, itu adalah perbandingan yang baik, meskipun saya tidak akan menyebutnya pemisahan perhatian (yang, tentu saja, prinsip dasar dalam pemrograman aplikasi dan desain), karena istilah ini umumnya berkaitan dengan tahap pengembangan aplikasi dan kami saat ini menemukan diri kami di tahap memahami data dan merancang struktur logisnya.
Dari pengalaman pribadi saya, saya menganggap bahwa fase ini berkaitan dengan menempatkan hal-hal penting ke dalam keseluruhan konteksnya, itu berkaitan dengan melihat asosiasi yang ada di antara entitas yang berbeda yang relevan dalam skenario minat tertentu, dan kemudian menggambarkan hal-hal ini dalam model data. Dalam kasus khusus yang Anda komentari, Addressentitas mungkin memiliki berbagai jenis koneksi dengan entitas lain, satu dengan Profiledan yang berbeda dengan Location.
Dan, ya, ketika sesuatu tidak terasa benar atau alami , itu mungkin merupakan pertanda bahwa seseorang perlu lebih berupaya untuk memahami data terkait. Dengan cara ini, Addressentitas adalah salah satu hal yang saya anggap perlu lebih diperhatikan, karena saya berpikir bahwa hubungan antara a Profiledan a Address dapat ditangani melalui Locationentitas (karena setiap orang Locationharus memiliki setidaknya satu fisik Address), oleh karena itu kami dapat memberhentikan ProfileAddressentitas asosiatif yang digambarkan dalam model terbaru, tetapi Anda harus terus menganalisa poin-poin ini dan memberi tahu saya ide-ide Anda.
Juga, apakah ini merupakan praktik umum dalam IDEF1X untuk mengubah denominasi PK / FK dalam entitas untuk keterbacaan yang lebih baik [misalnya ProfileId - LocationOwnerProfileId]?
Ya, itu adalah komentar yang sangat cerdik dari Anda, karena IDEF1X merekomendasikan penggunaan nama - nama peran untuk mendenominasi KUNCI LUAR NEGERI, untuk menangkap makna atribut tersebut sesuai dengan entitas di mana ia digunakan. Perlu juga dicatat bahwa ini juga sangat terkait dengan konsep migrasi kunci primer . Faktanya, penggunaan nama-nama peran mendahului IDEF1X, karena nama aslinya disajikan oleh Dr. EF Codd dalam teks seminalnya tahun 1970. Dengan cara ini, orang dapat dengan jelas melihat kesetiaan yang dipertahankan oleh standar IDEF1X terhadap model relasional .
Saya akan tertarik untuk mempelajari apa yang tidak terlalu Anda sukai / rasakan tidak sesuai dengan / dengan solusinya?
Selain detail yang sudah dijelaskan di atas tentang Addressentitas, saya tidak yakin apakah yang Rolesdilakukan oleh yang diberikan Profiledalam tertentu Locationsetara dengan Organizationatau Person. Dari sudut pandang saya, yang Personpertama harus dikaitkan dengan Organization, dan kemudian ini Organizationakan menunjuk mengatakan Personuntuk melakukan Rolekhususnya Location, tetapi Anda tahu skenario lebih baik, sehingga aturan ini mungkin tidak perlu. Dalam hal ini, saya akan bersikeras tentang fakta bahwa akan sangat membantu bagi saya untuk mengetahui gambaran kontekstual atau makna bahwa pengguna masa depan struktur data ini memberi untuk Organization, Profile, danLocation, tapi saya mengerti bahwa ini dapat dianggap informasi rahasia, jadi ini akan menjadi batasan.
Dengan struktur saat ini, sepertinya semua orang ( Organizationatau Person) dapat berhubungan dengan siapa saja (lagi, Organizationatau Person) dan dapat / melakukan apa saja ( Role) di mana saja ( Location) tetapi, perharps, ini adalah tepat apa yang Anda dan pengguna harapkan dari database ini , untuk itu Anda akan memberikan batasan yang jelas, tentu saja. Jika ini masalahnya, maka kami hampir memberikan solusi akhir. Karena, tentu saja, pendapat Anda menentukan dalam situasi ini, Anda juga harus menganalisa ide-ide ini dan kemudian biarkan saya tahu kesimpulan Anda sehingga kami dapat mengambil langkah-langkah terakhir.
Kemajuan kedua yang layak
Sayangnya, komunikasi berhenti beberapa minggu yang lalu, saya kira karena komitmen kerja yang harus Anda penuhi, yang benar-benar masuk akal. Saya akan jauh lebih puas jika kami telah mengembangkan model yang lebih stabil dan kuat tetapi, karena interaksi kami sebelumnya, saya dapat berasumsi bahwa saya dapat mengarahkan Anda ke arah yang benar.
Selain apa yang telah disajikan dalam proses tanya jawab ini, saya menganggap bahwa memberikan perkembangan baru dari model data sebelumnya dapat membantu bagi pencari lain dengan masalah yang sama. Jadi, saya telah membuat ...
Organisasi dan Profil Model Data Awal - Kemajuan Kedua
Seperti dapat dilihat dalam model data seperti itu, saya telah menghapus hubungan banyak-ke-banyak yang telah saya gambarkan dalam model sebelumnya antara Profiledan Address, karena yang diberikan Profilesudah terkait dengan satu-ke-banyak Addresses melalui yang dimilikinya Locations.
Perubahan lain yang diilustrasikan dalam kemajuan baru ini adalah kenyataan bahwa sekarang termasuk kemungkinan bahwa suatu pemberian Locationdapat dimiliki oleh satu-ke-banyak Profiles . Akibatnya, saya telah mengubah LocationKUNCI UTAMA (dengan mengabaikan LocationOwnerProfileIdatribut) dan kemudian menambahkan entitas asosiatif ( banyak-ke-banyak ) yang berhubungan Profiledengan Location.
Catatan
1. IDEF1X adalah teknik pemodelan data yang sangat direkomendasikan yang didefinisikan sebagai standar pada bulan Desember 1993 oleh Institut Nasional Standar dan Teknologi ( NIST ).
2. Ini adalah kejadian dari kluster subtipe tipe (super) . Jika Anda tertarik, inilah jawaban di mana saya berurusan secara lebih rinci dengan hubungan semacam ini.
3. Contoh hubungan hierarkis banyak-ke-banyak , dan sangat mirip dengan struktur yang memberikan solusi pasti untuk "Masalah Eksplorasi Bagian" . Solusi semacam itu, tentu saja, diperkenalkan oleh Dr. Edgar Frank Codd dalam makalahnya tahun 1970 yang sangat berpengaruh “Model Data Relasional untuk Bank Data Bersama Besar” .
4. Dengan demikian, ini adalah contoh dari hubungan hierarkis satu-ke-banyak (atau banyak-ke-satu) .