SORU
17 NİSAN 2009, Cuma


Veritabanı - Veri Sürüm

Bir veritabanı içinde veri çeşitlemesi açısından benzeri bir kaç soru (this one) okudum.

Bahsedilen bazı öneriler hoşuma gitti. Uzun zamandır istiyordum (gerekli) Gözden Geçirme için benim tablo çok var ama hiç vaktim olmadı. Benim kemer altında sadece basit veritabanı işlemleri bir programcı olmak aslında bu yapıyor hakkında gitmek nasıl merak ediyordum.

SQL sözdizimi gerçek çözüm için sormuyorum. Sonunda kendime (ya da zamanı geldiğinde ÇOK post) bulurum. Sadece insanlar, Olası performans sorunları varsa, eğer sen olabilir yapmak hakkında 'revizyon kayıtlarını milyon. yüzlerce giderler nasıl olarak yorum yapmak istiyorum Ya da başka önerileriniz örneğe dayalı olduğu sürece.

Basit bir örnek vermiş:

Person
------------------------------------------------
ID                UINT NOT NULL,
PersonID          UINT NOT NULL,
Name              VARCHAR(200) NOT NULL,
DOB               DATE NOT NULL,
Email             VARCHAR(100) NOT NULL

Audit
------------------------------------------------
ID                UINT NOT NULL,
UserID            UINT NOT NULL,               -- Who
TableName         VARCHAR(50) NOT NULL,        -- What
OldRecID          UINT NOT NULL,               -- Where
NewRecID          UINT NOT NULL,
AffectedOn        DATE NOT NULL,               -- When
Comment           VARCHAR(500) NOT NULL        -- Why

Eğer TableName bir dize ise başka bir tablo (İnsan gibi) Denetim tablo bağlantı olacağını nasıl emin değilim?

Ayrıca, üç GUI var varsayarak doldurmak için:

  1. Belirli bir kişi kimliği için tam bir rekor
  2. Tablo görünümünü tüm kişiler listesi (ıd)
  3. Görünümünü revize ile her kişi gösteren her kaydın altındaki bilgi (# kişi başı revizyonlar, Revizyon Tarihi, revizyon açıklamalar, vb.), en son sürümlerine göre emretti.

Başarmak için 1 ve 2, Kişi tablosu veya Denetim tablosunu sorgulamak için daha iyi olurdu?

3, sözde bir veritabanı uzmanı yalnızca tüm kayıtları almak ve yazılım aktaracaklardır işleme gerçekleştirmek için, ya da PersonİD ve Etkilenen tarihe göre grup? Bu sorguda genellikle işlenmiş ya da kaç.

CEVAP
17 NİSAN 2009, Cuma


Yıl içinde çeşitli denetim programları yaptım ve şu anda böyle bir şey uygulamak için gidiyorum:

Person
------------------------------------------------
ID                UINT NOT NULL,
PersonID          UINT NOT NULL,
Name              VARCHAR(200) NOT NULL,
DOB               DATE NOT NULL,
Email             VARCHAR(100) NOT NULL


Person_History
------------------------------------------------
ID                UINT NOT NULL,
PersonID          UINT NOT NULL,
Name              VARCHAR(200) NOT NULL,
DOB               DATE NOT NULL,
Email             VARCHAR(100) NOT NULL
AuditID           UINT NOT NULL


Audit
------------------------------------------------
ID                UINT NOT NULL,
UserID            UINT NOT NULL,               -- Who
AffectedOn        DATE NOT NULL,               -- When
Comment           VARCHAR(500) NOT NULL        -- Why

Mevcut kayıtları her zaman Person tablo. Eğer bir değişiklik olursa orada bir denetim kaydı oluşturulur ve eski rekor Person_History tablo (not KİMLİĞİNİ birden çok sürümü olabilir değiştirmek ve değil) kopyalanır

Denetim KİMLİĞİ eğer bu gibi bir denetim kaydı için birden fazla kayıt değişiklikleri bağlayabilirsiniz yani *_History tablolarda.

DÜZENLEME:< / ^ br . Eğer her temel tablo için ayrı bir geçmiş bir tablo var ve aynı masada eski tutun ve "" o zaman durum bayraklı kayıtları işaretlemek için kayıtlarda var. silinmiş kullanmak istemiyorsanız eğer. Bu sorunu mevcut kayıtları sorgularken gerçek bir acı - bunu yapmıştım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006