سؤال

لدي قاعدة بيانات تحتوي على العلاقات التالية:

Transaction->Purchase->Item->Schedule

Transaction - self explanitory
Purchase - any purchase info that relates to the item being purchased (quantity, if the user purchases more than one item).  A given Transaction can have more than one Purchase_ID tied to it.
Item - Stores Item info and relates it to individual clients.
Schedule - determines the price of an item at a given time of day.

أنا بحاجة إلى تنفيذ استعلام تحديد مجموعة من القيم من الجدول الزمني على أساس إذا Transaction.TimeStamp مسافة الموردة التاريخ المدى.الاستعلام يحتاج إلى تحديد قيمة من الجدول الزمني على أساس انها المفتاح الأساسي.المفتاح الأساسي لا يمكن تتبعها من الصفقة.

من أجل حل هذه القضية ، قررت إنشاء جدول ربط الصفقة مباشرة إلى الجدول الزمني الأساسي.

مؤخرا اكتشفت الجدول وجهات النظر - هل سيكون هذا الوضع المناسب لجعل الجدول "فيو" ؟ أو يجب علي إنشاء "الحقيقة" الجدول TransactionSchedule?

transactionSchedule
Transaction_ID    Schedule_ID

مشكلتي هي أنني لا أفهم تفاصيل عند عرض جدول مفيد/ما هي فوائد.

هو وجود الفرد الجدول تتبع المعاملات->جدول مبالغة ؟

حقا أي توجيهات عامة مع هذه المشكلة سيكون محل تقدير كبير.

تحرير: هذا الاستعلام هو الوحيد لاسترجاع البيانات التي تم إدخالها

--شكرا

هل كانت مفيدة؟

المحلول

أود أن نحث بقوة لك نسخ الأسعار من الجدول مباشرة إلى شراء في أقرب وقت كما كنت على إدراج هذا.بهذه الطريقة يكون لديك حل المشكلة و في نفس الوقت تمنع من سعر مختلف اتهامه إلى العميل في وقت لاحق إذا كنت غير قصد (أو عن قصد) تغيير الجدول الزمني.

أما بالنسبة المتعلقة المفتاح الأساسي من الجدول, و هذا لا يتم ارجاعها من transation:هذا هو علامة على سوء التصميم.أعني تفكر في ذلك - لديك الزمني في الصفقة ، جدول بالتعريف يتم وضعها في الوقت باستخدام مجموعة من الزمني - لماذا لا تتصل بهم ؟ AFAICS, المفتاح الأساسي من الجدول الزمني ينبغي أن يكون item_id, from_timestamp, to_timestamp

على افتراض الجدول الزمني الخاص بك لديه من الطابع الزمني الاستعلام بلدي سيكون

SELECT     ..your columns..
FROM       Transaction t
INNER JOIN Purchase    p
ON         t.id        = p.transaction_id
INNER JOIN Item        i
ON         p.id        = i.purchase_id
INNER JOIN Schedule    s
ON         i.id        = s.item_id
AND        t.timestamp BETWEEN s.from_timestamp
                           AND s.to_timestamp

كما أن استخدام طريقة العرض أو لا حقا, الأمر متروك لك.عرض لا عمل أفضل أو أسوأ من استعلام ، والفرق الوحيد هو أن التعريف المخزنة في قاعدة البيانات.المزايا الرئيسية التي

  • الناس يمكن إعادة تعريف دون نسخ الاستعلام (و العبث عنه) ،
  • يمكنك تغيير المخطط إلى حد ما و إخفاء ذلك من تطبيق توفير تحديث عرض تبعا لذلك (هذا الأخير ميزة هي المبالغة في كثير من الأحيان)

نصائح أخرى

ألا يمكن أن يكون لسجل المعاملات مفتاحًا خارجيًا مرتبطًا بالمفتاح الأساسي للجدول؟ أم أنها علاقة كثيرة. في كلتا الحالتين لا أرى عرضًا مناسبًا هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top