Relational
Databases 101
Ombu Labs, August 2015
Think
spreadsheets
A database is
a set of
interconnected relations (tables)
Id Username Name
1 mauro-oto Mauro
2 alanhala Alan
3 ceci Cecilia
4 etagwerker Ernesto
usersTable Name
Columns
Rows
Unique Ids
Id Name
1 OmbuShop
2 InfractoresBA
3 Alpha
4 Beta
projects
Interconnected?
“A User has many Addresses.”
For example
Users Addresses
has many
has one
Id Address User Id
1 Peru 212 23
2 Moldes 1333 55
3 Gorriti 332 212
4 Carranza 321 98
addresses
Reference
Column
References
That is a “one to
many” relationship
“A project has many people, and a
person belongs to many projects.”
For example
Users Projects
has many
has many
Users Projects
has many has many
Users_Projects
has onehas one
That is a “many to
many” relationship
Users Partner
has one
has one
That is a “one to
one” relationship
Database Management
Systems
MySQL, PostgreSQL,
SQLServer, Oracle,
DB2, MariaDB, etc…
SQL
Structured Query
Language
A standardized way
to CRUD records
SQL Queries (SELECT)
SELECT * FROM users
Id Username Name
1 mauro-oto Mauro
2 alanhala Alan
3 ceci Cecilia
4 etagwerker Ernesto
users
SELECT id, name FROM users
WHERE name = ‘Ernesto’
Id Name
4 Ernesto
users
SELECT <field names
separated by commas>
FROM <table name>
WHERE <key> = <value>
SQL Updates (UPDATE)
UPDATE users SET name =
‘Ernesto T’ WHERE name =
‘Ernesto’
UPDATE <table_name>
SET <key> = <value>,
… WHERE <key> =
<value>
SQL Inserts (INSERT)
INSERT INTO users (username,
name) VALUES (‘pepe’, ‘Pedro P’)
INSERT INTO <table_name>
(<column_name_1, …) VALUES
(<value_1, …)
SQL Deletes (DELETE)
DELETE FROM users
WHERE username = ‘pepe’
DELETE FROM <table_name>
WHERE <key> = <value>
SQL Joins
“Find all the users with name
Ernesto who live in the Moldes St.”
For example
Users Addresses
has many
has one
username
name
address
zipcode
SELECT id, name FROM users
INNER JOIN addresses
ON users.id = addresses.user_id
WHERE addresses.address LIKE
‘Moldes%’ AND users.name =
‘Ernesto’
Constraints
Primary keys
Id Username Name
1 mauro-oto Mauro
2 alanhala Alan
3 ceci Cecilia
4 etagwerker Ernesto
users
users: primary key (id)
users_projects: primary
key (user_id, project_id)
Foreign keys
Id Address User Id
1 Peru 212 23
2 Moldes 1333 55
3 Gorriti 332 212
4 Carranza 321 98
addresses
Reference
Column
Foreign
Keys
Indexes
Id Username Name
1 mauro-oto Mauro
2 alanhala Alan
3 ceci Cecilia
4 etagwerker Ernesto
users
Unique Indexes
ActiveRecord Pattern
Users
(MySql)
user.rb
(Rails)
Table
Record/row
Column
Row value
Class
Object instance
Attribute name
Attribute
Thank you!
Questions?

Relational Databases 101