MySQL tablolardan raporlar oluşturma

6 Cevap php

Diyelim ki MySQL tabloları bir grup var, ve sizin son kullanıcılar PHP ile bu verilerle raporlar oluşturmak mümkün olmak istiyorum diyelim. Sen bir açılan bu tablodan alan adları sunabilirsiniz, böylece bir kullanıcı söylemek mümkün olabilir, "first_name John eşittir." Harika. Ama ne bu alan adları biraz daha okunabilir olmasını istiyorsanız? Örneğin, ben yerine, bir alan olarak "İlk evcil hayvanınızın adı" seçmek mümkün kullanıcıyı istiyorum "first_pet_name." Ekliyoruz ve oldukça sık tabloları kaldırarak olabilir gibi ben kesinlikle biçimlendirme bu bilgileri saklamak istemiyorum. Bu koparmak için basit yolu nedir?

6 Cevap

Ben ilk harfini kasa alanlar ile çizgi değiştirme gibi basit ve üst bir şeyler yapardım.

Eğer masa + sütun çiftleri metin bilgileri bağlamak için, bir tablo oluşturabilirsiniz. Diyelim ki bir tablo var ki users edelim ve yerine * FIRST_NAME * sütun adı 'İlk evcil hayvanınızın adı' göstermek istiyorum.

Diyelim ki (tablo adı ColumnTextInformations):

ParentTable | ParentColumn | Text
      users |   first_name | Name of First Pet
...

Böylece sütun etiketleri için benzersiz tanımlayıcılar.

Bunu çok kolay oluyor kullanma:

SELECT Text 
FROM ColumnTextInformations
WHERE parentTable = ? AND parentColumn = ?

Ben veritabanında saklamak istiyorum.

CREATE TABLE human_labels (
    schema  varchar(64) not null,
    table   varchar(64) not null,
    column  varchar(64) not null,
    label   tinytext    not null,
    primary key (schema, table, column)
);

Şema, sık (veritabanlarını açtığınızda USE sonra ne gider) mysql in "database" diyoruz nerede; ve tablo ve sütun oldukça açıktır.

Tabii ki, emin DBA güncellemeleri yapmak gerekecek şemasını değiştirmeden zaman.

MySQL bir tablo üzerinde bir yorum değil, bir sütun verir, ya da bunu kullanabilirsiniz inanıyorum.

Edit: çünkü o 64 varchar değiştirildi ne maksimum boyutu olarak MySQL manuel belgeler. Ayrıca, isterseniz her sütunda bir yorum koyabilirsiniz çıkıyor - ve information_schema.columns o geri okuyabilirsiniz. Ama ben hala o (size örneğin "Bu alanı göstermesi gerekir" bayrak gibi, orada kolayca ek verileri koyabilirsiniz) ve aynı zamanda yorumlar amacına uygun olarak kullanılmasına olanak yukarıda onun daha esnek olarak gösterilen şekilde yapmak istiyorum.

Basit çözüm kullanmak için delimited identifiers. Bu tablo adlarını vb boşluk, noktalama işaretleri ve özel karakterler, SQL kelimeleri içeren sütun isimleri büyü verir

Sen (onları tanımlamak için kullanılan CREATE TABLE tablolara dahil) SQL sorguları tablo adları ve sütun adlarını sınırlandırmak zorunda.

CREATE TABLE `User Facts` (
  `User Name`         VARCHAR(100)
  ...
  `Name of First Pet` VARCHAR(100)
  ...
);

SELECT `Name of First Pet`
FROM `User Facts`
WHERE `User Name` = 'Bill';

MySQL varsayılan olarak sınırlandırılmış tanımlayıcılar için (yukarıda gösterildiği gibi) geri kene kullanır.

"Do different databases use different name quote" Daha fazla bilgi için bakınız.

Ben bu iyi bir fikir olduğunu söylemiyorum, ama teknik - technically - MySQL Eğer kod boyunca ters tırnakların olanlar tanımlayıcıları çevreleyen eğer boşluk sütunları ve tabloları oluşturmak izin verir. Örneğin:

mysql> create table `This is a Table` (`First Name` varchar(50),
    `Name of First Pet` varchar(20));
Query OK, 0 rows affected (0.06 sec)

mysql> insert into `This is a Table` values ('Tom', 'Skippy');
Query OK, 1 row affected (0.01 sec)

mysql> select * from `This is a Table`;
+------------+-------------------+
| First Name | Name of First Pet |
+------------+-------------------+
| Tom        | Skippy            |
+------------+-------------------+
1 row in set (0.00 sec)

Hiç sütun diğer adları heared?

SELECT pet AS Name of First Pet, user_name AS Name of User FROM users WHERE user = 'Bill';