কোনও সত্তার ধরণের মডেল কীভাবে বৈশিষ্ট্যের বিভিন্ন সেট থাকতে পারে?


11

ব্যবহারকারী এবং আইটেমগুলির মধ্যে একের মধ্যে বহু (1: এম) সম্পর্কের সাথে একটি ডাটাবেস পুনরায় তৈরি করতে আমার কিছুটা সমস্যা হচ্ছে ।

এটি বেশ সোজা, হ্যাঁ; তবে, প্রতিটি আইটেম একটি নির্দিষ্ট বিভাগের (যেমন, একটি গাড়ি , একটি নৌকা বা একটি প্লেন ) অন্তর্গত এবং প্রতিটি বিভাগের একটি বিশেষ সংখ্যক বৈশিষ্ট্য রয়েছে, যেমন:

Car গঠন:

+----+--------------+--------------+
| PK | Attribute #1 | Attribute #2 |
+----+--------------+--------------+

Boat গঠন:

+----+--------------+--------------+--------------+
| PK | Attribute #1 | Attribute #2 | Attribute #3 |
+----+--------------+--------------+--------------+

Plane গঠন:

+----+--------------+--------------+--------------+--------------+
| PK | Attribute #1 | Attribute #2 | Attribute #3 | Attribute #4 |
+----+--------------+--------------+--------------+--------------+

বৈশিষ্ট্যের সংখ্যার (কলাম) সংখ্যায় এই বৈচিত্র্যের কারণে, আমি প্রাথমিকভাবে ভেবেছিলাম প্রতিটি বিভাগের জন্য একটি পৃথক টেবিল তৈরি করা ভাল ধারণা হবে , তাই আমি বেশ কয়েকটি এনএইউএল এড়াতে এবং এভাবে সূচকের আরও ভাল ব্যবহার করব।

যদিও প্রথমে মহান লাগছিল, আমি মধ্যে সম্পর্ক তৈরি করতে একটি উপায় খুঁজে পাইনি চলছে এবং ধরন ডাটাবেসের মাধ্যমে কারণ একটি ডাটাবেস অ্যাডমিনিস্ট্রেটরের হিসাবে আমার বিনয়ী অভিজ্ঞতায় অন্তত যখন বিদেশী কী তৈরি, আমি স্পষ্টভাবে একটি ডাটাবেস অবহিত টেবিলের নাম এবং কলাম।

পরিশেষে, আমি একটি দৃ structure় কাঠামো চাই সমস্ত ডেটা সংরক্ষণ করার জন্য, যখন সমস্ত ব্যবহারকারীর কাছে থাকা সমস্ত আইটেমের সমস্ত বৈশিষ্ট্য তালিকাভুক্ত করার সমস্ত উপায় থাকার সাথে একটি ব্যবহারকারীর কাছে থাকতে পারে।

আমি সার্ভার-সাইড ল্যাঙ্গুয়েজ দিয়ে ডায়নামিক ক্যোয়ারীগুলিকে হার্ডকোড করতে পারি , তবে আমি অনুভব করি যে এটি ভুল এবং খুব অনুকূল নয়।

অতিরিক্ত তথ্য

এগুলি আমার এমডিসিএল মন্তব্যের প্রতিক্রিয়া:

1. কত আইটেম ধরন সুদের আপনার ব্যবসার প্রেক্ষাপটে তিন (অর্থাত, আছে কার , নৌকা এবং বিমান ) নাকি আরো বেশী?

আসলে এটি খুব সাধারণ: মোট পাঁচটি বিভাগ রয়েছে।

২. একই আইটেমটি কি সর্বদা একই ব্যবহারকারীর অন্তর্ভুক্ত হবে (যা একবার নির্দিষ্ট আইটেমটি নির্দিষ্ট ব্যবহারকারীর কাছে "অর্পণ করা" হয়ে গেলে তা পরিবর্তন করা যায় না)?

না, তারা পরিবর্তন করতে পারে। প্রশ্নের কাল্পনিক দৃশ্যে, এটি এমন হবে যে ব্যবহারকারী এ ব্যবহারকারী বি এর জন্য আইটেম # 1 বিক্রি করে , তাই মালিকানা অবশ্যই প্রতিফলিত হবে।

৩. এমন কিছু বৈশিষ্ট্য রয়েছে যা কিছু বা সমস্ত বিভাগ দ্বারা ভাগ করা হয় ?

ভাগ করা নেই কিন্তু স্মৃতি থেকে, আমি বলতে পারেন যে অন্তত তিনটি গুণাবলীর সব উপস্থিত ধরন

) ব্যবহারকারীর এবং আইটেমের মধ্যে সম্পর্কের কার্ডিনালিটি ওয়ান-টু-মুন (1: এম) এর পরিবর্তে অনেকগুলি থেকে বহু (এম: এন) হওয়ার কোনও সুযোগ আছে কি ? উদাহরণস্বরূপ, নিম্নলিখিত ব্যবসায়ের বিধিগুলির ক্ষেত্রে: A User owns zero-one-or-many ItemsএবংAn Item is owned by one-to-many Users

না, কারণ আইটেমগুলি একটি শারীরিক বস্তুর বর্ণনা দেয়। ব্যবহারকারীদের এগুলির একটি ভার্চুয়াল অনুলিপি থাকবে, প্রত্যেকেই একটি অনন্য জিইউইডি ভি 4 দ্বারা সনাক্ত করা হবে

৫. প্রশ্নোত্তরের একটিতে আপনার নিম্নলিখিত প্রতিক্রিয়া সম্পর্কিত:

"প্রশ্নের কল্পিত দৃশ্যে, এটি ব্যবহারকারী এ-এর ব্যবহারকারী আইটির জন্য আইটেম # 1 বিক্রি করে দেওয়ার মতো হবে , সুতরাং মালিকানা অবশ্যই প্রতিবিম্বিত হবে।"

দেখে মনে হচ্ছে আপনি এই আইটেমটির মালিকানা বিবর্তনের উপর নজর রাখার পরিকল্পনা করছেন , তাই বলার জন্য। এই জাতীয় উপায়ে আপনি কোন বৈশিষ্ট্যগুলি সংরক্ষণ করতে চান? কেবলমাত্র নির্দিষ্ট বৈশিষ্ট্যের পরিবর্তন যা নির্দিষ্ট আইটেমের মালিক কে নির্দিষ্ট ব্যবহারকারীকে নির্দেশ করে ?

না সত্যিই না. মালিকানা পরিবর্তন হতে পারে, কিন্তু আমি পূর্ববর্তী ট্র্যাক রাখতে প্রয়োজন হবে না মালিক

উত্তর:


18

বিবেচনা অধীন ব্যবসায়িক পরিবেশের আপনার বর্ণনা মতে, একটি বিদ্যমান supertype-উপপ্রকার কাঠামোই বোঝায় আইটেম যে সময়টাতে supertype- এবং তার প্রতিটি ধরন , অর্থাত্, গাড়ি , নৌকা এবং প্লেন (দুই সহ আরো পরিচিত উত্পন্ন হয় নি) - উপপ্রকার —

আমি এই জাতীয় দৃশ্য পরিচালনা করতে যে পদ্ধতি অনুসরণ করব তার নীচে আমি বিশদটি করব।

ব্যবসার নীতি

অর্ডার প্রাসঙ্গিক delineating শুরু করতে ধারণাগত স্কিমা, সবচেয়ে গুরুত্বপূর্ণ কিছু ব্যবসার নীতি এতদূর (তিন প্রকাশ বিশ্লেষণ সীমাবদ্ধ নির্ধারিত ধরন শুধুমাত্র সম্ভব সংক্ষিপ্ত এখানে কিছু রাখার) প্রণয়ন করা যেতে পারে নিম্নরূপ:

  • একজন ব্যবহারকারী শূন্য-এক-বা একাধিক আইটেমের মালিক
  • নির্দিষ্ট আইটেমটিতে একটি আইটেমের মালিক হ'ল এক-এক ব্যবহারকারী
  • একটি আইটেম একাধিক ব্যবহারকারী সময়ে স্বতন্ত্র পয়েন্টে মালিক হতে পারে
  • একটি আইটেম ঠিক এক বিভাগ দ্বারা শ্রেণিবদ্ধ করা হয়
  • একটি আইটেম সর্বদা,
    • হয় একটি গাড়ী
    • বা একটি নৌকা
    • বা একটি বিমান

ইলাস্টেটিভ আইডিইএফ 1 এক্স ডায়াগ্রাম

চিত্র 1 এ সম্পর্কিত IDEF1X 1 চিত্রটি প্রদর্শন করে যা প্রাসঙ্গিকভাবে প্রদর্শিত অন্যান্য ব্যবসায়িক বিধিগুলির সাথে পূর্ববর্তী সূত্রগুলি গোষ্ঠী করতে আমি তৈরি করেছি:

চিত্র 1 - আইটেম এবং বিভাগগুলি সুপার টাইপ-সাব-টাইপ কাঠামো

Supertype

একদিকে, অন আইটেম , supertype, উপহার বৈশিষ্ট্য বা চারিত্রিক বৈশিষ্ট্য আছে যেগুলো সব সাধারণ ধরন , অর্থাত্,

  • CategoryCode -specified যেমন একটি বিদেশী কী (এফ কে) যে রেফারেন্স Category.CategoryCode এবং একটি উপপ্রকার হিসাবে ফাংশন discriminator , অর্থাৎ, এটি নির্দেশ করে সঠিক শ্রেণী উপপ্রকার প্রদত্ত যা দিয়ে আইটেম connected- হতে হবে,
  • OwnerId একটি এফ কে যে পয়েন্ট হিসেবে -distinguished User.UserId , কিন্তু আমি এটি কি রোল নাম বরাদ্দ 2 অনুক্রমে তার বিশেষ প্রভাব আরো accurately- প্রতিফলিত করতে,
  • ফু ,
  • বার ,
  • বাজ এবং
  • তৈরিডেটটাইম

উপশাখা

অন্যদিকে, বৈশিষ্ট্য যে প্রতি বিশেষ অধিকারে থাকা শ্রেণী , অর্থাত্,

  • Qux এবং Corge ;
  • গ্রুট , গার্পলি এবং প্লুঘ ;
  • Xyzzy , দুম্ করিয়া , Wibble এবং Flob ;

সংশ্লিষ্ট সাব টাইপ বক্সে প্রদর্শিত হয়।

শনাক্তকারী

তারপরে, আইটেম.আইডিমিটি প্রাথমিক কী (পিকে) বিভিন্ন চরিত্রের নাম সহ 3 টি সাব - টাইপে স্থানান্তরিত হয়েছে , অর্থাৎ,

  • কারআইডি ,
  • বোটআইডি এবং
  • PlaneId

পারস্পরিক একচেটিয়া সমিতি

চিত্রিত হিসাবে, (ক) প্রতিটি অতিপ্রাকৃত ঘটনা এবং (খ) এর পরিপূরক সাব টাইপ দৃষ্টান্তের মধ্যে কার্ডিনালিটি ওয়ান টু ওয়ান (1: 1) এর সাথে একটি সমিতি বা সম্পর্ক রয়েছে।

একচেটিয়া উপপ্রকার প্রতীক সত্য যে উপশাখাকে পারস্পরিক একচেটিয়া, অর্থাৎ চিত্রিত, একটি কংক্রিট আইটেম সংঘটন শুধুমাত্র একটি একক উপপ্রকার উদাহরণস্বরূপ দ্বারা supplemented করা যেতে পারে: হয় এক গাড়ি , বা এক প্লেন , বা এক নৌকা (দুই বা তার বেশি কখনো)।

, সত্তা প্রকারের কিছু বৈশিষ্ট্য এনটাইটেল করার জন্য আমি ক্লাসিক স্থানধারীর নাম নিযুক্ত করেছি, কারণ তাদের আসল নামগুলি প্রশ্নটিতে সরবরাহ করা হয়নি।

এক্সপোজিটরি লজিকাল-স্তরের বিন্যাস

ফলস্বরূপ, একটি এক্সপোজিটারি লজিকাল ডিজাইন নিয়ে আলোচনা করতে, আমি প্রদর্শিত এবং বর্ণিত IDEF1X চিত্রের উপর ভিত্তি করে নিম্নলিখিত এসকিউএল-ডিডিএল বিবৃতি পেয়েছি:

-- You should determine which are the most fitting 
-- data types and sizes for all your table columns 
-- depending on your business context characteristics.

-- Also, you should make accurate tests to define the 
-- most convenient INDEX strategies based on the exact 
-- data manipulation tendencies of your business context.

-- As one would expect, you are free to utilize 
-- your preferred (or required) naming conventions. 

CREATE TABLE UserProfile (
    UserId          INT      NOT NULL,
    FirstName       CHAR(30) NOT NULL,
    LastName        CHAR(30) NOT NULL,
    BirthDate       DATE     NOT NULL,
    GenderCode      CHAR(3)  NOT NULL,
    Username        CHAR(20) NOT NULL,
    CreatedDateTime DATETIME NOT NULL,
    --
    CONSTRAINT UserProfile_PK  PRIMARY KEY (UserId),
    CONSTRAINT UserProfile_AK1 UNIQUE ( -- Composite ALTERNATE KEY.
        FirstName,
        LastName,
        GenderCode,
        BirthDate
    ),
    CONSTRAINT UserProfile_AK2 UNIQUE (Username) -- ALTERNATE KEY.
);

CREATE TABLE Category (
    CategoryCode     CHAR(1)  NOT NULL, -- Meant to contain meaningful, short and stable values, e.g.; 'C' for 'Car'; 'B' for 'Boat'; 'P' for 'Plane'.
    Name             CHAR(30) NOT NULL,
    --
    CONSTRAINT Category_PK PRIMARY KEY (CategoryCode),
    CONSTRAINT Category_AK UNIQUE      (Name) -- ALTERNATE KEY.
);

CREATE TABLE Item ( -- Stands for the supertype.
    ItemId           INT      NOT NULL,
    OwnerId          INT      NOT NULL,
    CategoryCode     CHAR(1)  NOT NULL, -- Denotes the subtype discriminator.
    Foo              CHAR(30) NOT NULL,
    Bar              CHAR(30) NOT NULL,
    Baz              CHAR(30) NOT NULL,  
    CreatedDateTime  DATETIME NOT NULL,
    --
    CONSTRAINT Item_PK             PRIMARY KEY (ItemId),
    CONSTRAINT Item_to_Category_FK FOREIGN KEY (CategoryCode)
        REFERENCES Category    (CategoryCode),
    CONSTRAINT Item_to_User_FK     FOREIGN KEY (OwnerId)
        REFERENCES UserProfile (UserId)  
);

CREATE TABLE Car ( -- Represents one of the subtypes.
    CarId INT      NOT NULL, -- Must be constrained as (a) the PRIMARY KEY and (b) a FOREIGN KEY.
    Qux   CHAR(30) NOT NULL,
    Corge CHAR(30) NOT NULL,   
    --
    CONSTRAINT Car_PK         PRIMARY KEY (CarId),
    CONSTRAINT Car_to_Item_FK FOREIGN KEY (CarId)
        REFERENCES Item (ItemId)  
);

CREATE TABLE Boat ( -- Stands for one of the subtypes.
    BoatId INT      NOT NULL, -- Must be constrained as (a) the PRIMARY KEY and (b) a FOREIGN KEY.
    Grault CHAR(30) NOT NULL,
    Garply CHAR(30) NOT NULL,   
    Plugh  CHAR(30) NOT NULL, 
    --
    CONSTRAINT Boat_PK         PRIMARY KEY (BoatId),
    CONSTRAINT Boat_to_Item_FK FOREIGN KEY (BoatId)
        REFERENCES Item (ItemId)  
);

CREATE TABLE Plane ( -- Denotes one of the subtypes.
    PlaneId INT      NOT NULL, -- Must be constrained as (a) the PRIMARY KEY and (b) a FOREIGN KEY.
    Xyzzy   CHAR(30) NOT NULL,
    Thud    CHAR(30) NOT NULL,  
    Wibble  CHAR(30) NOT NULL,
    Flob    CHAR(30) NOT NULL,  
    --
    CONSTRAINT Plane_PK         PRIMARY KEY (PlaneId),
    CONSTRAINT Plane_to_Item_PK FOREIGN KEY (PlaneId)
        REFERENCES Item (ItemId)  
);

প্রদর্শিত হিসাবে, superentity ধরণ এবং subentity ধরণের প্রতিটি সংশ্লিষ্ট বেস টেবিল দ্বারা প্রতিনিধিত্ব করা হয় ।

কলাম CarId, BoatIdএবং PlaneIdউপযুক্ত টেবিল পিকেএস যেমন সীমাবদ্ধ, এফ কে সীমাবদ্ধতার প্রণালী দ্বারা ধারণাগত পর্যায়ের একের সাথে এক সমিতি প্রতিনিধিত্বমূলক সাহায্যের § যে বিন্দু ItemIdকলাম, যা পি কে যেমন সীমাবদ্ধ Itemটেবিল। এটি বোঝায় যে, একটি আসল "জোড়ায়", সুপারটাইপ এবং সাব টাইপ সারি উভয়ই একই পিকে মান দ্বারা চিহ্নিত করা হয়; সুতরাং, এটি উল্লেখ করার চেয়ে সুবিধাজনক

  • (ক) একটি সংযোজনের অতিরিক্ত হোল্ড সিস্টেম-নিয়ন্ত্রিত ভাড়াটে মান কলাম (খ) টেবিল উপশাখাকে জন্য দাঁড়িয়ে থেকে (গ) সম্পূর্ণরূপে অপর্যাপ্ত

§ অর্ডার সমস্যা ও ত্রুটি সংক্রান্ত (বিশেষত অজানা) কী বাধ্যতা সংজ্ঞা -situation আপনি comments- উল্লেখ প্রতিরোধ করার জন্য, এটা খুবই গুরুত্বপূর্ণ বিবেচনা করা হয় অস্তিত্ব-নির্ভরতা যে হাতে বিভিন্ন টেবিল মধ্যে সঞ্চালিত হয়, হিসাবে exemplified এক্সপোজেটরি ডিডিএল কাঠামোর মধ্যে সারণীর ঘোষণার আদেশ, যা আমি এই এসকিউএল ফিডলগুলিতে সরবরাহ করেছি ।

উদাহরণস্বরূপ, মাইএসকিউএল নির্মিত একটি ডাটাবেসের টেবিলটিতে AUTO_INCREMENT সম্পত্তি সহ একটি অতিরিক্ত কলাম যুক্ত করা ।

নিখরচায়তা এবং ধারাবাহিকতা বিবেচনা

এটি উল্লেখ করা গুরুত্বপূর্ণ যে আপনার ব্যবসায়ের পরিবেশে, আপনাকে (1) এটি নিশ্চিত করতে হবে যে প্রতিটি "সুপারটাইপ" সারিটি সর্বদা এটির সাথে সম্পর্কিত "সাব টাইপ" প্রতিরূপ দ্বারা পরিপূরক, এবং পরিবর্তে, (২) গ্যারান্টি বলেছে যে "সাব টাইপ" সারিটি "সুপার টাইপ" সারির "বৈষম্যমূলক" কলামে থাকা মানের সাথে সামঞ্জস্যপূর্ণ।

ঘোষিত পদ্ধতিতে এই জাতীয় পরিস্থিতি কার্যকর করা খুব মার্জিত হবে তবে দুর্ভাগ্যক্রমে, বড় এসকিউএল প্ল্যাটফর্মগুলির কোনওটিই যথাযথ ব্যবস্থা সরবরাহ করেনি, যতদূর আমি জানি। সুতরাং, এসিডি ট্রান্সএকশনের মধ্যে পদ্ধতিগত কোডটি অবলম্বন করা এটি যথেষ্ট সুবিধাজনক যাতে এই শর্তগুলি সর্বদা আপনার ডাটাবেসে পূরণ হয়। অন্য বিকল্পটি ট্রিগারদের নিয়োগ করবে, তবে তারা জিনিসগুলিকে অপ্রীতিকর করে তোলে, তাই বলে।

দরকারী মতামত ঘোষণা

এক মত একটি লজিক্যাল নকশা উপরে বর্ণিত হচ্ছে, এটা খুবই ব্যবহারিক হবে এক বা একাধিক মতামত, অর্থাত, তৈরি করতে উদ্ভূত টেবিল যে কলাম প্রাসঙ্গিক আরো দুই বা অন্তর্গত গঠিত বেস টেবিল। এই উপায়ে, আপনি উদাহরণস্বরূপ, প্রত্যেকবার "সংযুক্ত" তথ্য পুনরুদ্ধার করার জন্য সমস্ত জোইনগুলি না লিখে those দর্শনগুলি থেকে সরাসরি নির্বাচন করতে পারেন।

নমুনা তথ্য

এই ক্ষেত্রে, আসুন আমরা বলতে পারি যে বেস টেবিলগুলি নীচে দেখানো নমুনা ডেটা সহ "জনবহুল" রয়েছে:

--

INSERT INTO UserProfile 
    (UserId, FirstName, LastName, BirthDate, GenderCode, Username, CreatedDateTime)
VALUES
    (1, 'Edgar', 'Codd', '1923-08-19', 'M', 'ted.codd', CURDATE()),
    (2, 'Michelangelo', 'Buonarroti', '1475-03-06', 'M', 'michelangelo', CURDATE()),
    (3, 'Diego', 'Velázquez', '1599-06-06', 'M', 'd.velazquez', CURDATE());

INSERT INTO Category 
    (CategoryCode, Name)
VALUES
    ('C', 'Car'), ('B', 'Boat'), ('P', 'Plane');

-- 1. ‘Full’ Car INSERTion

-- 1.1 
INSERT INTO Item
    (ItemId, OwnerId, CategoryCode, Foo, Bar, Baz, CreatedDateTime)
VALUES
    (1, 1, 'C', 'This datum', 'That datum', 'Other datum', CURDATE());

 -- 1.2
INSERT INTO Car
    (CarId, Qux, Corge)
VALUES
    (1, 'Fantastic Car', 'Powerful engine pre-update!');

-- 2. ‘Full’ Boat INSERTion

-- 2.1
INSERT INTO Item
  (ItemId, OwnerId, CategoryCode, Foo, Bar, Baz, CreatedDateTime)
VALUES
  (2, 2, 'B', 'This datum', 'That datum', 'Other datum', CURDATE());

-- 2.2
INSERT INTO Boat
    (BoatId, Grault, Garply, Plugh)
VALUES
    (2, 'Excellent boat', 'Use it to sail', 'Everyday!');

-- 3 ‘Full’ Plane INSERTion

-- 3.1
INSERT INTO Item
  (ItemId, OwnerId, CategoryCode, Foo, Bar, Baz, CreatedDateTime)
VALUES
  (3, 3, 'P', 'This datum', 'That datum', 'Other datum', CURDATE());

-- 3.2
INSERT INTO Plane
    (PlaneId, Xyzzy, Thud, Wibble, Flob)
VALUES
    (3, 'Extraordinary plane', 'Traverses the sky', 'Free', 'Like a bird!');

--

এর পরে, একটি সুবিধাজনক দৃশ্য এক যে ধরেছেন থেকে কলাম হয় Item, Carএবং UserProfile:

--

CREATE VIEW CarAndOwner AS
    SELECT C.CarId,
           I.Foo,
           I.Bar,
           I.Baz,
           C.Qux,
           C.Corge,           
           U.FirstName AS OwnerFirstName,
           U.LastName  AS OwnerLastName
        FROM Item I
        JOIN Car C
          ON C.CarId = I.ItemId
        JOIN UserProfile U
          ON U.UserId = I.OwnerId;

--

স্বাভাবিকভাবেই, একটি অনুরূপ পদ্ধতির অনুসরণ করা যেতে পারে যাতে আপনি পাশাপাশি একটি সম্পূর্ণ টেবিল থেকে সরাসরি "পূর্ণ" Boatএবং Planeতথ্য নির্বাচন করতে পারেন (এই ক্ষেত্রে একটি উত্সাহিত,)।

আপনি -if নিম্নলিখিত দেখুন সংজ্ঞা সঙ্গে ফলাফলের sets- মধ্যে শূন্য নম্বরের উপস্থিতি সম্পর্কে কিছু মনে না করেন পরে, আপনি যা করতে পারেন, যেমন, "সংগ্রহ" টেবিল থেকে কলাম Item, Car, Boat, Planeএবং UserProfile:

--

CREATE VIEW FullItemAndOwner AS
    SELECT I.ItemId,
           I.Foo, -- Common to all Categories.
           I.Bar, -- Common to all Categories.
           I.Baz, -- Common to all Categories.
          IC.Name      AS Category,
           C.Qux,    -- Applies to Cars only.
           C.Corge,  -- Applies to Cars only.
           --
           B.Grault, -- Applies to Boats only.
           B.Garply, -- Applies to Boats only.
           B.Plugh,  -- Applies to Boats only.
           --
           P.Xyzzy,  -- Applies to Planes only.
           P.Thud,   -- Applies to Planes only.
           P.Wibble, -- Applies to Planes only.
           P.Flob,   -- Applies to Planes only.
           U.FirstName AS OwnerFirstName,
           U.LastName  AS OwnerLastName
        FROM Item I
        JOIN Category IC
          ON I.CategoryCode = IC.CategoryCode
   LEFT JOIN Car C
          ON C.CarId = I.ItemId
   LEFT JOIN Boat B
          ON B.BoatId = I.ItemId
   LEFT JOIN Plane P
          ON P.PlaneId = I.ItemId               
        JOIN UserProfile U
          ON U.UserId = I.OwnerId;

--

এখানে দেখানো দর্শনগুলির কোডটি কেবল চিত্রিত। অবশ্যই, কিছু পরীক্ষার অনুশীলন এবং পরিবর্তনগুলি হাতে থাকা প্রশ্নের (শারীরিক) সম্পাদনকে ত্বরান্বিত করতে সাহায্য করতে পারে। তদতিরিক্ত, আপনার প্রয়োজন হতে পারে ব্যবসায়ের আদেশ যেমন বলা হয়েছে তাতে কলামগুলি মুছে ফেলতে বা যুক্ত করতে হবে।

নমুনা ডেটা এবং সমস্ত দর্শন সংজ্ঞাগুলি এই এসকিউএল ফ্রেডલમાં সংযুক্ত করা হয়েছে যাতে তারা "কার্যক্রমে" পর্যবেক্ষণ করতে পারে।

ডেটা ম্যানিপুলেশন: অ্যাপ্লিকেশন প্রোগ্রাম (গুলি) কোড এবং কলামের নাম

অ্যাপ্লিকেশন প্রোগ্রাম (গুলি) কোডের ব্যবহার (যদি এটি "সার্ভার-সাইড নির্দিষ্ট কোড" বলতে বোঝায়) এবং কলামের অন্যান্য নামগুলি আপনি পরবর্তী মন্তব্যে তুলে ধরেছেন এমন অন্যান্য উল্লেখযোগ্য বিষয়:

  • আমি সার্ভার-সাইড নির্দিষ্ট কোডটি দিয়ে সমস্যার সমাধান করতে সক্ষম হয়েছি, তবে আমি সত্যিই এটি করতে চাই না - সমস্ত কলামগুলিতে এলিয়াস যোগ করা "চাপ" হতে পারে।

  • খুব ভাল ব্যাখ্যা করা হয়েছে, আপনাকে অনেক ধন্যবাদ। যাইহোক, আমি যেমন সন্দেহ করেছি, কিছু কলামের সাথে মিল থাকার কারণে সমস্ত তথ্য তালিকাভুক্ত করার সময় আমাকে ফলাফল সেটটি হেরফের করতে হবে, যেহেতু আমি বিবৃতিটি পরিষ্কার রাখতে বেশ কয়েকটি উপাত্ত ব্যবহার করতে চাই না।

এটি ইঙ্গিত করার উপযুক্ত যে অ্যাপ্লিকেশন প্রোগ্রামের কোডটি ফলাফল সেটগুলির উপস্থাপনা (বা গ্রাফিকাল) বৈশিষ্ট্যগুলি হ্যান্ডেল করার জন্য খুব উপযুক্ত সংস্থান, একটি সারি-সারি ভিত্তিতে ডেটা পুনরুদ্ধার এড়ানো কার্যকরভাবে গতির সমস্যাগুলি রোধ করার জন্য সর্বোচ্চ is এসকিউএল প্ল্যাটফর্মের (সুনির্দিষ্টভাবে) সেট ইঞ্জিন দ্বারা সরবরাহিত শক্তিশালী ডেটা ম্যানিপুলেশন যন্ত্রগুলির মাধ্যমে টোটোতে প্রাসঙ্গিক তথ্য সেটগুলি "আনয়ন" উদ্দেশ্য হওয়া উচিত যাতে আপনি আপনার সিস্টেমের আচরণটি অনুকূলিত করতে পারেন।

তদুপরি, নির্দিষ্ট ক্ষেত্রের মধ্যে এক বা একাধিক কলামের নতুন নামকরণের জন্য এলিয়াস ব্যবহার করা জোর দেওয়া হতে পারে তবে ব্যক্তিগতভাবে আমি এ জাতীয় সংস্থানকে একটি শক্তিশালী সরঞ্জাম হিসাবে দেখি যা (i) প্রসঙ্গে এবং (ii) এর সাথে সম্পর্কিত অর্থউদ্দেশ্যকে দ্বিধায়িত করতে সহায়তা করে কলাম; অতএব, এটি এমন একটি দিক যা আগ্রহের ডেটাগুলিতে হেরফেরের ক্ষেত্রে যথাযথভাবে চিন্তা করা উচিত।

অনুরূপ পরিস্থিতিতে

আপনি ভাল হিসাবে সাহায্যের পেতে পারে পোস্টের মধ্যে এই সিরিজের এবং পোস্ট এর এই দলের যা দুই অন্যান্য ক্ষেত্রে যে পারস্পরিক একচেটিয়া উপশাখাকে সঙ্গে supertype-উপপ্রকার সমিতির অন্তর্ভুক্ত আমার নিন ধারণ করে।

আমি একটি সুপারটাইপ-সাব টাইপ ক্লাস্টার জড়িত ব্যবসায়ের পরিবেশের জন্য একটি সমাধানের প্রস্তাবও দিয়েছি যেখানে এই (নতুন) উত্তরে সাব টাইপগুলি পারস্পরিক একচেটিয়া নয়


শেষটীকা

ইনফরমেশন মডেলিংয়ের জন্য ইন্টিগ্রেশন সংজ্ঞা ( আইডিইএফ 1 এক্স ) একটি অত্যন্ত প্রস্তাবযোগ্য ডেটা মডেলিং কৌশল যা১৯৯৩ সালের ডিসেম্বরে ইউএস ন্যাশনাল ইনস্টিটিউট অফ স্ট্যান্ডার্ডস অ্যান্ড টেকনোলজি (এনআইএসটি)দ্বারাএকটি স্ট্যান্ডার্ড হিসাবে প্রতিষ্ঠিত হয়েছিল। এটা তোলে দৃঢ় উপর (ক) তত্ত্বীয় কাজ কিছু রচনা ভিত্তি করে একমাত্র জন্মদাতা এর রিলেশনাল মডেল , অর্থাত্, ডাঃ মতিন Codd ; (খ) সত্তা-সম্পর্ক দৃষ্টিভঙ্গি , ডঃ পিপি চেন দ্বারা বিকাশ; এবং এছাড়াও (গ) রবার্ট জি ব্রাউন দ্বারা নির্মিত লজিকাল ডেটাবেস ডিজাইন প্রযুক্তি।

2 আইডিইএফ 1 এক্স-তে, কোনও ভূমিকা নাম একটি স্বতন্ত্র লেবেল যা এফকে সম্পত্তি (বা বৈশিষ্ট্য) এর জন্য নির্ধারিত হয় যাতে এটি তার নিজ নিজ সত্তার ধরণের ক্ষেত্রের মধ্যে থাকা অর্থটি প্রকাশ করে।

3 আইডিইএফ 1 এক্স স্ট্যান্ডার্ড কী মাইগ্রেশনটিকে "পিতা-মাতা বা জেনেরিক সত্তার প্রাথমিক কীটি তার সন্তান বা বিভাগের সত্তায় একটি বিদেশী কী হিসাবে রাখার মডেলিং প্রক্রিয়া" হিসাবেসংজ্ঞায়িত করে।


1
আমি নিশ্চিত না যে আমি আপনার অনুসন্ধানটি বুঝতে পেরেছি, তবে ডিডিএল লেআউটে চিত্রিত হিসাবে, Itemটেবিলটিতে একটি CategoryCodeকলাম রয়েছে । "
নিখরচায়তা

1
এটি উল্লেখ করা গুরুত্বপূর্ণ যে আপনার ব্যবসায়ের পরিবেশে, আপনাকে (1) এটি নিশ্চিত করতে হবে যে প্রতিটি "সুপারটাইপ" সারিটি সর্বদা এটির সাথে সম্পর্কিত "সাব টাইপ" প্রতিরূপ দ্বারা পরিপূরক, এবং পরিবর্তে, (২) গ্যারান্টি বলেছে যে "সাব টাইপ" সারিটি "সুপার টাইপ" সারির "বৈষম্যমূলক" কলামে থাকা মানের সাথে সামঞ্জস্যপূর্ণ।
MDCCL

1
ঘোষিত পদ্ধতিতে এই জাতীয় পরিস্থিতি প্রয়োগ করা খুব মার্জিত হবে তবে দুর্ভাগ্যক্রমে, বড় এসকিউএল প্ল্যাটফর্মগুলির কোনওটিই যথাযথ ব্যবস্থা সরবরাহ করতে পারেনি, যতটা আমি জানি। সুতরাং, এসিডি ট্রান্সএকশনের মধ্যে পদ্ধতিগত কোডটি অবলম্বন করা এটি যথেষ্ট সুবিধাজনক যাতে এই শর্তগুলি সর্বদা আপনার ডাটাবেসে পূরণ হয়। অন্য বিকল্পটি ট্রিগারদের নিয়োগ করবে, তবে তারা জিনিসগুলিকে অপ্রীতিকর করে তোলে, তাই বলে।
MDCCL

1
বিষয়টির মূল বিষয়টি হ'ল কোনও এসকিউএল বাস্তবায়ন (মাইএসকিউএল ডায়ালেক্ট সহ) শক্তিশালী এবং মার্জিত ঘোষণামূলক সরঞ্জামগুলির পক্ষে যথাযথ সমর্থন সরবরাহ করে না যা পদ্ধতিগত পদ্ধতির (ট্রান্সএকশনস বা ট্রিগারস) অবলম্বন এড়াতে বা যেমন অপ্রয়োজনীয় উপায়ে কাজ করতে সহায়তা করবে would উদাহরণস্বরূপ, অকারণে CategoryColumnটেবিলগুলিতে সাবটাইপের জন্য দাঁড়িয়ে থাকা (যৌক্তিক [উদাহরণস্বরূপ, সংশোধন ব্যঙ্গগুলি] এবং বিমূর্ততার শারীরিক স্তরের [উদাহরণস্বরূপ, অতিরিক্ত সূচকগুলি, বৃহত্তর কাঠামো ইত্যাদির সাথে থাকা) অকারণে পুনরুক্ত করা) "
এমডিসিএল

2
কোনও ডাটাবেস পরিচালন সিস্টেমের বিক্রেতারা / বিকাশকারীরা এই কাজের জন্য যথাযথ সরঞ্জাম - সহায়তা সরবরাহ না করে, আমি (ক) এটির ট্রানজেকশনস বা ট্রিগারস-এর (বি) অপ্রয়োজনীয় কর্মক্রমের প্রক্রিয়াগত পদ্ধতিগুলি পছন্দ করি (যদিও) এটি একটি সম্ভাবনা - যা আমি ব্যক্তিগতভাবে সুপারিশ করি না — অবশ্যই, ডিবিএকে প্রাসঙ্গিকতার ডাটাবেসে কার্যকর করা বৈধ ডেটা ম্যানিপুলেশন অপারেশন সম্পর্কিত অনুমতিগুলি সাবধানতার সাথে পরিচালনা করতে হবে, যা সিদ্ধান্তের সাথে ডেটা অখণ্ডতা বজায় রাখতে যথেষ্ট সহায়তা করে।
MDCCL

0

মূল টেবিলের পণ্যগুলিকে কল করতে দেয়। এটি ভাগ করে নেওয়া অর্জনগুলি হোস্ট করে। তারপরে আমাদের বলুন যে আমাদের কাছে একটি গাড়ী টেবিল, একটি প্লেন টেবিল এবং একটি নৌকা টেবিল রয়েছে। এই তিনটি টেবিলটিতে প্রোডাক্ট টেবিলের আইডি সারিতে একটি এফকে বাধা সম্বলিত একটি প্রোডাক্টআইডি কী থাকবে। আপনি যদি তাদের সমস্তটি চান - তাদের সাথে যোগ দিন। আপনি যদি কেবল গাড়ি চান, বাম পণ্যগুলির সাথে গাড়িতে যোগ দিন (বা পণ্য এবং গাড়িগুলিতে ডান যোগ দিন, তবে আমি সর্বদা বাম দিকের যোগদান করতে পছন্দ করি)।

একে বলা হয় একটি শ্রেণিবিন্যাসের ডেটা মডেল। অল্প সংখ্যক উপ-টেবিলের জন্য এটি দীর্ঘ টেবিলে (পণ্যগুলির মিলিয়ন) বোধ করতে পারে।


এবং তারপরে আমি পণ্যগুলির সাথে ব্যবহারকারীদের সাথে যোগদান করব?
ব্যবহারকারী5613506

1
সাধারণত আপনি যখন আপনার সামনের প্রান্তে পণ্যগুলির তালিকা ফিরিয়ে দেন তখন আপনার ব্যবহারকারীর তথ্যের প্রয়োজন হয় না, আপনার পণ্য সম্পর্কিত তথ্য প্রয়োজন। ব্যবহারকারী এবং পণ্যগুলিতে যোগদান এবং প্রতিটি প্রত্যাশিত পণ্য সারিটির জন্য অভিন্ন ব্যবহারকারীর তথ্য ফিরিয়ে দেওয়ার কোনও মানে নেই। সুতরাং প্রথমে আপনি পণ্যের টেবিল এবং উপযুক্ত উপ-টেবিল (গাড়ি, নৌকা ...) এ যোগ দিয়ে প্রোডাক্ট টাইপ করে ফিল্টার করেন এবং তারপরে আপনি একটি ক্লিয়ার ক্লজ ব্যবহার করে ব্যবহারকারীর মাধ্যমে ফিল্টার করেন। সাধারণত আপনি পণ্য সারণীতে একটি মালিকানাধীন আইডি (ব্যবহারকারী সারণীর আইডি কলামে একটি এফকে) রাখতে চান। সুতরাং আপনি একটি পূর্ণ মালিক = [অনুরোধ.উক্তার] যোগ করবেন।
neManiac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.