Why not separate data?
While normalisation does indeed eliminate data duplication and drastically cut down on the chance of operator error, it does have some side effects. For example, to properly join two tables together to give one result is harder than a normal query, and
much harder to optimise. It is also a little slower, because MySQL has to read from several places at once, rather than just one table. Of course, this second downside is negated entirely by the saving in space!
Next chapter: First normal form >>
So, what is the solution here?
Databases Introduction Database hierarchy Types of data Date and time Transactions Stored procedures Triggers Views Keys Referential integrity Indexes Persistent connections Temporary Tables Table handlers Round up History MySQL PostgreSQL Oracle Microsoft SQL Server SQL SQL comments Interacting with MySQL Creating tables Making table changes Deleting tables Inserting data Selecting data Extra SELECT keywords Updating data Deleting data MySQL for dummies A working example Multiple WHERE conditions Grouping rows together with GROUP BY MySQL functions Managing indexes Simple text searching using LIKE Advanced text searching using full-text indexes Range matching Working with NULL Default values Using MySQL with PHP Connecting to a MySQL database Querying and formatting Disconnecting from a MySQL database Reading in data Mixing in PHP variables Results within results Advanced formatting Reading auto-incrementing values Unbuffered queries for large data sets: MYSQLI_USE_RESULT phpMyAdmin PEAR::DB Quick PEAR::DB calls Query information Advanced PEAR::DB Impeared performance? SQLite Using SQLite Before you begin Getting started with SQLite 3 Advanced usage: SQLite3::lastInsertRowID() and SQLite3::querySingle() Mixing SQLite and PHP: SQLite3::createFunction() Normalisation Why separate data? So, what is the solution here? Why not separate data? First normal form Second normal form Other normal forms Conclusion Table joins Complex joins Using temporary tables Adjusting the priority queue How to design your tables Picking the perfect data type When MySQL knows best Persistent connections Choosing a table type Transactions MySQL Improved Subselects, views, and other advanced functions Subselects Views Referential integrity Summary Exercises Further reading Next chapter
Table of Contents
Copyright ©2015 Paul Hudson.
Follow me: @twostraws.