Bir veritabanı içinde veritabanı (Drupal olmadan a la CCK)

0 Cevap php

Ben son derece basitleştirilmiş versiyonu olsa Drupal CCK benzer bir Codeigniter kütüphane inşa umuyorum. Ben en iyi aşağıdaki kullanım durumunda tarif edilebilir benim nihai hedefe ulaşmak için en iyi çalışacak veritabanı yapısının ne tür merak ediyorum:

Interface:

Mevcut içerik türleri:

  • Page [değiştir tip] [liste tüm] [Yeni sayfa ekle]
  • Değerlendirme [değiştir tip] [liste tüm] [yeni Değerlendir ekle]
  • DVD Film [değiştir tip] [liste tüm] [yeni DVD film ekle]

[Yeni içerik türü oluşturmak]

The web developer clicks on [Yeni içerik türü oluşturmak]:

Form: New content type

Başlık girin: [_Visitor Comment __ _ __ _ __ _ ___ ]

Alanı ekle:

  • Alan adı: [_Name __ _ __ _ __ _ _ ]
  • Alan türü: [Text (<128 characters)] (. Açılan w temel seçenekleri)
  • Gerekli Değeri: [x]
  • [Alanını Ekle]

[Içerik türünü kaydet]

Web geliştirici alanlarda bir çift ekler:

Form: New content type

Başlık girin: [_Visitor Comment __ _ __ _ __ _ ___ ]

Şu alanlar:

  1. Ad | Metin (<128 karakter) | Gerekli
  2. E-posta | Metin (<128 karakter) | isteğe bağlı
  3. İçerik | Metin (<1.024 karakter) | Gerekli
  4. ForPage | Sayfa | gerekli

Alanı ekle:

  • Alan adı: [_ __ _ __ _ __ _ __ _ ]
  • Alan türü: [-seçim aşağıda]
  • Gerekli Değeri: []
  • [Alanını Ekle]

[Içerik türünü kaydet]

Web geliştirici içerik türünü kaydeder ve sistem oluşturur ...... iyi, what exactly?

Idea 1: I kolaylıkla (aslında çok ilkel phpmyadmin sistemi oluşturacak) karşılık gelen alanları ile yeni bir DB tablo oluşturmak izin verebilir - ama bu akıllıca olur? Olmaz bu ve bunun için bir sürü tablolar ile sadece çöp veritabanı?

Idea 2: Ya da ben gibi bir "veritabanı içinde-bir-veritabanı", bir şey yaratmak olabilir:

table ContentType (e.g. "Book")
-- id
-- title

table CustomField (e.g. "Author Name")
-- id
-- ContentTypeID (linking the "Author Name" field to the "Book" type)
-- valueType (linking the field to the correct db table of values)

table DBRecord (e.g. "Lord Of The Rings vol.1")
-- id
-- ContentTypeID (linking the LotR record to the "Book" type)

table ValueText128 (e.g. "J.R.R. Tolkien")
-- id
-- DBRecordID (linking the value to the LotR record)
-- CustomFieldID (linking the Tolkien value to the "Author Name" field)
-- value : char(128)

table ValueSmallInt (e.g. "1954")
-- id
-- DBRecordID (linking the value to the LotR record)
-- CustomFieldID (linking the "1954" value to the "Published Year" field)
-- value : smallInt

...and so on, with a table for each of the datatypes

Bu muhtemelen işe yarayabilir, ama bütün sistem içinde her tür her öğe her tamsayı değeri aynı büyük tabloda sona ereceğini göz önüne alındığında, pratikte korkunç verimsiz olabilir şüpheli - Her karakter için ve aynı (128) değeri vs

So - ne düşünüyorsun? CCK bunu nasıl yapar? Ne iyi çalışmak istiyorsunuz?

0 Cevap