birden fazla tablo içine bölme veri

5 Cevap php

Ben bir çalışanı sayfa inşa ediyorum.

Bazı bilgiler bir 'çalışanların tabloya gider ama bazı' çalışan 'tablosuna başvurulan bir' kullanılabilirlik 'tabloya gider:

availability: id / employeeid (unique id from employees table) / monday available / and on and on /

Ben bunları oluşturmak kadar Yani çalışanların tablodan benzersiz kimliği yok.

Ben çalışanların bilgi ayarlayın ve sonra çalışan tablosunda son oluşturulan satır almak için bir sorgu ve sonra kullanılabilirliğini belirlemek için bundan benzersiz id kullanarak bir sorgu yapmak için gayet ...

Yoksa bu dağınık ve ben bir çalışanın sayfası oluşturun ve sonra bir dizi durumuna sayfa olmalıdır?

Böylece temelde bu iki işlevi ayırmak için kodlama temiz ve 'daha iyi' olup olmadığını bilmek istiyorum?

5 Cevap

@ Quassnoi cevabı ekleme:

Sen çalışanın kaydını eklemek istiyorum, o zaman ilave employee kaydetmek için autoincremented benzersiz kimliği bulmak için MySQL LAST_INSERT_ID() işlevini kullanabilirsiniz. Daha sonra tekrar availability INSERT deyimi içine bu değeri besleyebilir.

Daha fazla bilgi http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html de MySQL manuel sayfada

Bir de kayıtları ekleyerek diğer kullanımları olabilir beri bir deyim (örneğin SELECT MAX(employee.id)) kullanmak önemlidir. LAST_INSERT_ID(), bağlantı özgüdür

Tabii availability sonra, employee Önce oluşturmak.

Lütfen tablolar ise bir şey yanlış giderse bütün güncellemeyi geri alma böylece InnoDB, bir işlem yapabilirsiniz.

Is it fine to do a query where I set the employee info and then a query to get the last created row in the employee table and then use the unique id from that to set the availability...

Evet, tamam geliyor. Eğer ÇalışanNo için bir değiştirmemesi sütun kullanırsanız, daha sonra güvenli bir şekilde bu son eklenen id almak için mysql_insert_id() veya eşdeğer kullanabilirsiniz. Sürü insan aynı anda kullandığınız zaman sorunlarla alabilirsiniz çünkü, SELECT MAX(employeeid) FROM .... yapmayın.

Kolayca son insered kayıt yoluyla alabilirsiniz

mysql_insert_id()

After that, you can insert an availability record for the desired employee. Note: I would choose a framework that takes care of these issues, like Symfony or Cake.

"Son oluşturulan satır kullanma" her zaman bekliyoruz şekilde çalışmayabilir ve başka bir programcı projeyi kabul varsa orada büyüme var ya eğer gelecekte şeyleri komplike edebilir. Ben aradığınız anlamak, bunun yerine 3 tablolar olmalıdır. Çalışanlar için bir tablo, kullanılabilirlik, ve üçüncü bir tablo için bir tablo dernek için benzersiz kayıtları saklamak için kullanılmalıdır. Benzersiz bir kimliği, çalışan kimliği, kullanılabilirlik id: dernek tablodaki her satır için sütun olacaktır.