मैं एक डेटाबेस स्थापित करने की कोशिश कर रहा हूं, लेकिन मैं कुछ हद तक खो गया हूं कि इसे कैसे व्यवस्थित किया जाए। ऐसा लगता है कि इसे संबंधपरक बनाने के लिए समझ में आता है, क्योंकि मेरे डेटाबेस Objects में atoms की सूचियां हैं, और वे परमाणु अन्य Object वस्तुओं में फिर से आ सकते हैं। तो हमारे पास

Object स्यूडोकोड:

{
  name: 'object1',
  atoms: [ 
    {name: 'atom1', color: 'red'}, 
    {name: 'atom2', color: 'green'}, 
  ...
  ]
}

मैं इसके साथ संघर्ष करता हूं: परमाणुओं के अलग-अलग रंग होते हैं, यह इस बात पर निर्भर करता है कि वे किस वस्तु में दिखाई देते हैं। इसलिए atom1 object1 में लाल हो सकते हैं, लेकिन object2 में हरा। उनका रंग समग्र संदर्भ पर निर्भर करता है और वस्तु में अन्य परमाणु क्या मौजूद हैं। लेकिन वे अवधारणात्मक रूप से अलग परमाणु नहीं हैं, क्योंकि यह कहना अभी भी समझ में आता है कि atom1 कभी हरा, कभी लाल होता है। मैं अभी भी उन्हें इस तरह गिनने में सक्षम होना चाहता हूं।

मुझे समझ में नहीं आता कि मैं इसे एक रिलेशनल डेटाबेस पर सबसे अच्छा कैसे मॉडल करता हूं। परमाणु वस्तुओं में पुन: उत्पन्न होते हैं, लेकिन उनके कुछ गुण भिन्न हो सकते हैं। इसलिए मैं केवल Object1 को परमाणु तालिका से atom1, atom2, & atom3 देखने के लिए नहीं कह सकता। कोई विचार?

1
R. Kohlisch 15 मार्च 2020, 15:07

2 जवाब

बिट वर्बोज़, लेकिन अंतर्निहित डिज़ाइन पद्धति को दर्शाता है: प्राकृतिक भाषा में विधेय और बाधाएँ।

All attributes (columns) NOT NULL

[p x]   = predicate  x
(c x.y) = constraint x.y

PK = Primary Key
AK = Alternate Key (Unique)
FK = Foreign Key

[p 1] OBJECT_ID द्वारा पहचानी गई वस्तु, जिसका नाम OBJECT_NAME है, मौजूद है।

(c 1.1) वस्तु की पहचान OBJECT_ID द्वारा की जाती है।

(c 1.2) प्रत्येक वस्तु का ठीक एक नाम होता है; प्रत्येक नाम के लिए, ठीक एक वस्तु का वह नाम होता है।

object {OBJECT_ID, OBJECT_NAME} -- p 1
    PK {OBJECT_ID}              -- c 1.1
    AK {OBJECT_NAME}            -- c 1.2

[p 2] ATOM_NAME द्वारा पहचाने गए परमाणु मौजूद हैं।

(c 2.1) परमाणु की पहचान परमाणु के नाम से होती है।

atom {ATOM_NAME}  -- p 2
  PK {ATOM_NAME}  -- c 2.1

[p 3] परमाणु रंग ATOM_COLOR मौजूद है।

(c 3.1) परमाणु रंग की पहचान ATOM_COLOR द्वारा की जाती है।

atom_color {ATOM_COLOR}  -- p 3
        PK {ATOM_COLOR}  -- c 3.1

[p 4] परमाणु ATOM_NAME वस्तु OBJECT_ID रंग ATOM_COLOR में दिखाई देता है।

(c 4.1) किसी वस्तु में दिखने वाले प्रत्येक परमाणु के लिए; उस वस्तु में दिखाई देने वाला परमाणु ठीक एक परमाणु रंग में दिखाई देता है।

(c 4.2) रंग में दिखने वाले प्रत्येक परमाणु के लिए; वह परमाणु उस रंग में एक से अधिक वस्तुओं में प्रकट हो सकता है।

(c 4.3) प्रत्येक वस्तु और परमाणु रंग के लिए; उस वस्तु में उस रंग में एक से अधिक परमाणु दिखाई दे सकते हैं।

(c 4.4) यदि किसी वस्तु में कोई परमाणु किसी रंग में दिखाई देता है, तो उस परमाणु का अस्तित्व होना चाहिए।

(c 4.5) यदि किसी वस्तु में एक रंग में परमाणु दिखाई देता है, तो उस वस्तु का अस्तित्व होना चाहिए।

(c 4.6) यदि किसी वस्तु में कोई परमाणु किसी रंग में दिखाई देता है, तो वह परमाणु रंग मौजूद होना चाहिए।

atom_object {ATOM_NAME, OBJECT_ID, ATOM_COLOR}  -- p 4
         PK {ATOM_NAME, OBJECT_ID}              -- c 4.1, 4.2, 4.3

FK1 {ATOM_NAME}  REFERENCES atom       {ATOM_NAME}  -- c 4.4
FK2 {OBJECT_ID}  REFERENCES object     {OBJECT_ID}  -- c 4.5
FK3 {ATOM_COLOR} REFERENCES atom_color {ATOM_COLOR} -- c 4.6
0
Damir Sudarevic 18 मार्च 2020, 18:30

यह तीन तालिकाओं की तरह लगता है:

objects

  • objectId
  • objectName

atoms

  • atomId
  • atomName

objectAtoms

  • objectId
  • atomId
  • color

मुझे यकीन नहीं है कि "रंग" एक अलग संदर्भ तालिका भी होनी चाहिए।

1
Gordon Linoff 15 मार्च 2020, 16:51
Objects.objectName गुम है। व्यक्तिगत रूप से मैं वस्तुओं को पसंद करता हूं। नाम / परमाणु। नाम, अन्यथा ऐसा लगता है कि हम प्रत्येक कॉलम में इकाई का नाम दोहरा रहे हैं ...
 – 
COY
15 मार्च 2020, 15:49