Karşılaştığınız verileri anlamak, sınıflandırmak ve modellemek için zaman ayırmanız harika, çünkü kişisel deneyimimden tüm bunlar, tüm geliştirme sürecini gelecekteki değişiklikler için daha kolay ve çok esnek hale getiriyor. Ve eminim ki zaten bunun farkındasınız.
Ön veri modeli ve varsayılan iş kuralları
Şartnamenizi anladığımı açıklamak için, sorunuzu okuduktan ve diyagramlarınızı yakından inceledikten sonra benim üstlendiğim iş kurallarının bir listesini tanımladım. Bu listeyi tanımladıktan sonra, harici veri tabanına (Dropbox) .PDF belgesi olarak yüklemeye karar verdiğim bir IDEF1X [1] veri modelini türettim, çünkü biçimi nedeniyle bu veri modeli gömülü bir görüntüye tam uymuyor. Bu iki araç, ilerlemeye devam etmek için Unsurlar'ın çözmesi başlıklı bölümde aşağıda sıraladığım bazı önemli noktalara referans olarak faydalı olacaktır .
İlk olarak, işte…
Sadece bu olduğundan, ön, istenen nihai veri modelini gerçekleştirmemize yardımcı olan bir araç olarak düşünün.
Varsayılan iş kuralları
Bahsedilen ön veri modeli, aşağıdaki şekilde numaralandıracağım iş kurallarından (sorunuzdan çıkarılmıştır) bir derlemeden türetilmiştir:
Organizasyonlar ve profiller
NotProfile
anda eş anlamlı olarak anlaşılmaktadır Person
.
- An
Organization
, bire çok bir dosttur Profiles
.
- An
Organization
, bire çok bir dosttur Organizations
.
- An
Organization
, bire çok üyesidir Organizations
.
- A
Profile
, bire çok üyesidir Organizations
.
- A
Profile
, bire çok bir dosttur Profiles
.
- A
Profile
, bire çok üyesidir Profiles
.
Konumlar ve adresler
- Bir
Organization
sahibi birini çoğa Locations
.
- A
Location
, bire çok olarak sınıflandırılır LocationTypes
( belirli bir zamanda yalnızca bir tane ).
- Bir
Location
olabilecek bire birçok Addresses
( tek Physical
, tek için Shipping
, bir tane için Billing
, ya da bir bütün söyledi amaca hizmet eder, veya bir o birleştirir iki amaç ve hizmet veren başka tek tanesi).
Bir Address
, bir-çok tarafından tutulabilir Profiles
veya başka bir deyişle, bir -çokProfile
tutar . Addresses
Spesifik bir Address
tarafından kullanılabilir bire çok Profiles
(şekilde hizmet Physical
için bir Profile
için kullanılan, Billing
tarafından farklı bir , vs.). Yani, bir Address
için benzer bir şekilde çalışır Locations
ve Profiles
.
- Böylece, tek bir
Address
olabilir, aynı zamanda tipte Physical
, Shipping
ve Billing
.
Konumlar ve roller
- A bire çok
Location
açılır . Roles
- A
Role
, bir-çok halinde gerçekleştirilebilir Locations
.
- Bir
Profile
(o kadar ayarlanmış olan Member
bir bölgesinin Organization
) yapabilir -çok tek- Roles
de, birden-çok Locations
(ancak sadece bir spesifik Role
her Location
zaman içinde belirli bir noktada, yani, daha fazla hiçbir iki ya da Roles
aynı anda ).
İlerlemeye devam etmek için çözülmesi gereken hususlar
Veri modelinizin çözünürlüğünde ilerlemeye devam etmek için, bunları çalıştırdığımızda, bu hedefe ulaşmamıza yardımcı olacak ilgili noktaların bir listesi:
Profile
Bağlamınızdaki terimin , onunla aynı (veya aynı) bir anlama sahip olduğunu varsaydım Person
, ancak biraz farklı olabilir. Bu şekilde, senaryonuzda varlıkların Organization
ve Person
alt tiplerinin olduğunu söyleyebilir misiniz Profile
?
Bir Can Profile
(veya Person
) kendi bire birçok EmailAddresses
, ya bir edilir Profile
(veya Person
) sabitlenmiş tam olarak bir EmailAddress
?
Bir imkanın sağlamak ister misiniz Organization
üzerinden ulaşılmasını Telephone
ve Email
, veya bunun sadece mümkün olması sınırlamak istediğiniz bir Profile
(veya Person
)?
Ben varsayalım Location
sabitlenir tam olarak bir Address
Çeşidi Physical
bu doğrudur?
Bir için mümkün mü Location
tarafından paylaşılacak tek çoğa farklı Organizations
veya aksi bir Location
mülkiyetinde edilebilir tek Organization
?
Yorumlarla a Member
ve a olmanın Friend
aynı olduğunu söylediniz. Önerilen ön veri modelimde de görebileceğiniz gibi, size orijinal spesifikasyonları izledim ve mümkün olan en iyi olanı tanımlama çabasında yardımcı olabileceğini düşündüğüm için farklı işletmelerdeki Organization
ve Profile
(veya Person
) arasındaki olası üyelik ve dostluk kombinasyonlarını tasvir ettim. senaryo bölümünüzün yapısı. Bu manada:
- İfadenin çağrılan varlık ile ilgili
an Organization is a Member of another Organization
ifadeden farklı etkileri olduğunu varsayıyorum .a Profile (or Person) is a Member of an Organization
Location
- Eğer veri modelinde de görebileceğiniz gibi, ben düşünüyorum
Role
ait Owner
bir için geçerlidir Organization
geçerlidir, bana göre ve Roles
bir Profile
(ya da Person
), bir iç Location
vardır Admin
ve Member
. Bütün bunlar hakkında ne düşünüyorsun? Durumunuz için geçerli olan iş kuralları ile doğrudan temas halinde olduğunuz için, varsayımlarımın doğru olup olmadığını bana söylemelisiniz.
Bir Profile
(veya Person
) Roles
aynı içinde farklı oynayabilir Location
mi? yani bir olabilir Person
aynı anda olmak, Admin
aynı zamanda bir ve Member
aynı Location
? Bu konudaki kurallar nelerdir?
Aynı Profile
(veya Person
) farklı Roles
farklı oynayabilir düşünüyorum Locations
. Örneğin: Belirli bir Profile
(veya Person
) Location
“1” deki “Yönetici” dir ve aynı Profile
(veya Person
) aynı zamanda “2” Member
içindeki bir “ ” dir Location
. Haklı mıyım?
Belirli bir kişinin aynı anda Location
farklı olması mümkün mü LocationTypes
, yoksa bir kişi Location
tam olarak bir tanesine sahip olmaya sabit LocationType
mi?
Bu özellik Organization.Website
, “dba.stackexchange.com” gibi belirli bir kuruluşun web sitesi adresini temsil ediyor mu?
Eğer Profile
“1” (olarak anlaşılır Person
) “2” nin bir Member
(veya Friend
) ise Profile
, Profile
“1” Role
in Location
ait olduğu bir Profile
“2” ye ait olması mümkün müdür ? Bu tür senaryoların sadece Organization
a ve a arasındaki ilişkiler için geçerli Member
Person
olduğunu düşünüyorum, ne düşünüyorsunuz?
Benzer şekilde, eğer içinde Organization
“1” bir olan Member
(veya Friend
) ait Organization
“2”, bu mümkündür Organization
“1” dışında bir yürütmek için Role
bir de Location
sahip olduğu Organization
“2”? Yine, bu tür senaryoların sadece Organization
a ve a arasındaki ilişkiler için geçerli olduğunu düşünüyorum Member
Person
, bu doğru mu?
Bu bakımdan bu sorunlar-yazıyorum -henüz ben orada karıştığı sadece üç çeşit ilişkiler olduğunu söylemek mantıklı olacaktır düşünüyorum Organizations
ve Persons
ve biz tanımlayabilirsiniz:
- (a) a
Organization
ve a arasındaki ilişki Person
“ Membership
” olarak.
- (b) a
Person
ve diğeri arasındaki ilişki Person
“ Friendhip
” den farklı .
- (c) Bir birey ile farklı bir kişi arasındaki ilişkiyi tanımlamak için henüz anlamlı bir isim bulmadık .
Organization
Organization
- Öyleyse, (a), (b) ve (c) hakkında ne düşündüğünüzü söyleyin.
A'nın aynı anda bir -çok farklı Organization
olması Friend
(veya a Member
) olması mümkün müdür ? Ya da sadece a'nın sadece bir farklı ile bir ilişkisi olması mümkündür.Organizations
Organization
Organization?
İlk ilerlemeyi gösteren ardışık veri modeli
Yukarıda listelediğim beklemedeki yönlere verdiğiniz yanıtlara ve kararlarınıza dikkat ederek aşağıdakileri yarattım…
Henüz onunla pek rahat hissetmeme rağmen, bu yeni veri modeli aşağıdaki iş kurallarını ifade ediyor:
- Bir
Profile
olan ya bir Organization
ya da bir Person
. [2]
- A
Profile
, bir-çok kişiyi sunan arkadaş olabilir FriendProfiles
ve a -bir-çok kişiyiProfile
kabul eden arkadaş olabilir . [3] FriendProfiles
- Bir
Location
oluşabilir birden-birçok Locations
. [4]
Sonraki spesifik yorumlarınızın cevapları
Endişelerin ayrılmasını not etmek / birleştirmek benim için gerçekten ilginç [örn.
Evet, bu iyi bir karşılaştırmadır, ancak endişelerin ayrılması olarak adlandırılmasam da (ki bu kesinlikle uygulama programlama ve tasarımında temel bir ilkedir ), çünkü bu terim yaygın olarak uygulama geliştirme aşamasıyla ilgilidir ve şu anda kendimizi verileri anlama ve mantıksal yapısını tasarlama aşaması.
Kişisel deneyimlerime göre, bu aşamanın önemli şeyleri tüm bağlamlarına koymakla ilgisi olduğunu, belirli ilgi senaryosunda alakalı olan farklı varlıklar arasında var olan ilişkileri görmekle ve bunları bir veri modelinde tasvir ediyor. Hakkında yorum yaptığınız belirli bir durumda, Address
işletmenin diğer varlıklarla, biri ile diğeri ile farklı bağlantıları olabilir .Profile
Location
Ve evet, bir şey doğru veya doğal hissetmediğinde , ilgili verileri anlamak için daha fazla çaba sarf etmek gerektiğinin bir işareti olabilir. Bu şekilde, Address
varlık bir ilişkisi olduğunu düşünüyorum çünkü ben, bu yeterli yeri daha fazla dikkat düşünün şeylerden biridir Profile
ve bir Address
olabilir yoluyla ele alınması Location
nedeniyle her gerçeğine (varlık Location
önerilen en az bir tek fiziksel Address
), bu nedenle olabilir görevden ProfileAddress
son modelde öngörülen ilişkisel varlık, ancak bu noktaları analiz eden devam ve bana fikirlerinizi bildirmeniz gerekir.
Ayrıca, IDEF1X'te daha iyi okunabilirlik için varlıklardaki PK / FK ifadelerini değiştirmek yaygın bir uygulamadır [örneğin ProfileId - LocationOwnerProfileId]?
Evet, bu sizden çok zekice bir açıklama çünkü IDEF1X, DIE KEYS'i tanımlamak için rol adlarının kullanılmakta olduğu varlığa göre anlamını yakalamak için kullanılmasını önerdiğinden . Bunun ayrıca birincil anahtar göçü kavramıyla da yakından ilişkili olduğunu belirtmek gerekir . Nitekim, rol adlarının kullanımı IDEF1X'ten önce gelmektedir, çünkü aslen Dr. EF Codd tarafından 1970 seminal metninde sunuldu. Bu şekilde, IDEF1X standardının ilişkisel modele doğru sadakatini açıkça görebilirsiniz .
Çözümde / ile özellikle neyi sevmediğinizi / modellemediğini hissettiğinizi öğrenmek ister miyim?
Zaten yaklaşık Yukarıda açıklanan detaylar yanında Address
varlık, ben olmadığından emin değilim Roles
verilen yürüttüğü Profile
bir özellikle Location
bir eşdeğer olan Organization
veya bir Person
. Benim açımdan bir Person
ilk ihtiyaçlarını bir ile ilişkili olduğu Organization
ve daha sonra bu Organization
sözü atayacağını Person
bir gerçekleştirmek için Role
bir özellikle Location
, ancak bu kurallar gereksiz olabilir bu nedenle, daha iyi senaryoyu biliyoruz. Bu bağlamda, bana içeriksel açıklama veya bilmek için çok yararlı olacağını gerçeği hakkında ısrar edeceğim anlamını bu veri yapısı-ver geleceği kullanıcıları bu Organization
, Profile
veLocation
, ancak bunun gizli bilgiler olarak kabul edilebileceğini anlıyorum, bu yüzden bu bir sınırlama olacaktır.
Mevcut yapı ile, herkes ( Organization
veya Person
) herhangi biriyle (tekrar Organization
veya Person
) ilişkili olabilir ve Role
herhangi bir yerde ( Location
) herhangi bir şey olabilir ( ) olabilir, ancak perharps, tam olarak sizin ve kullanıcıların bu veritabanından bekledikleri şeydir elbette ki iyi tanımlanmış kısıtlamalar sunacaksınız. Bu durumda, neredeyse nihai bir çözüm sağlıyoruz. Doğal olarak, fikriniz bu durumda belirleyici olduğundan, bu fikirleri de analiz etmeli ve ardından son adımları atabilmemiz için sonuçlarınızı bana bildirmelisiniz.
Uygulanabilir ikinci ilerleme
Ne yazık ki, iletişim birkaç hafta önce durdu, sanırım yerine getirmeniz gereken iş taahhütleri yüzünden, bu tamamen makul. Daha istikrarlı ve sağlam bir model geliştirmiş olsaydık çok daha memnun olurdum, ancak önceki etkileşimlerimiz nedeniyle sizi doğru yöne yönlendirebileceğimi varsayabilirim.
Bu soru ve cevap sürecinde daha önce sunulanlara ek olarak, önceki veri modellerinden yeni bir ilerleme sağlamanın benzer bir sorunu olan diğer arayanlar için yararlı olabileceğini düşünüyorum. Bu yüzden,…
Organizasyonlar ve Profiller Ön Veri Modeli - İkinci İlerleme
Bu tür veri modelinde görüldüğü gibi, kaldırdık çok-sayıda I arasında önceki modellerinde gösterilmiştir ki ilişki Profile
ve Address
belirli bir yana, Profile
zaten ilgilidir birden-çok Addresses
kendi ait yoluyla Locations
.
Bu yeni ilerlemede gösterilen bir başka değişiklik, şimdi bir verili bire-çokLocation
kişiye ait olma olasılığını içermesidir . Sonuç olarak, değişmiş (uzaklaştırarak birincil anahtar (bir birleştirici varlık ardından ilave öznitelik) ve çok-sayıda ile ilgilidir) ile . Profiles
Location
LocationOwnerProfileId
Profile
Location
notlar
1. IDEF1X , Aralık 1993'te ABD Ulusal Standartlar ve Teknoloji Enstitüsü ( NIST ) tarafından standart olarak tanımlanan oldukça tavsiye edilen bir veri modelleme tekniğidir .
2. Bu, bir (süper) tip-alt tip kümesinin bir oluşumudur . İlgilenmeniz durumunda , bu tür ilişkilerle daha ayrıntılı bir şekilde uğraştığım bir cevap .
3. Çoktan çoğa hiyerarşik bir ilişki örneği ve “Parça Keşfi Sorunu” na kesin çözüm veren yapıya çok benzer . Böyle bir çözüm, elbette, Dr. Edgar Frank Codd tarafından 1970 yılında son derece etkili olan “Büyük Paylaşılan Veri Bankaları için İlişkisel Bir Veri Modeli” kitabında tanıtıldı .
4. Bu şekilde, bu bire çok (veya çoktan bire) hiyerarşik ilişkinin bir örneğidir .