I am doing a small application for Invoice.In that the tables will be like this
=== invoice ===
id (pk)
customer_id (fk)
invoice_title
invoice_issue_date
due_date
description
created_by
updated_by
created_at
updated_at
=== invoice_items ===
id (pk)
invoice_id (fk)
customer_id (fk)
product_name
unit_cost
quantity
apply_tax1
apply_tax2
discount
description
created_by
updated_by
created_at
updated_at
=== customers ===
id (pk)
business_email
business_name
customer_name
business_address
town/city
state/province
postalzip_code
country
phone
mob
fax
created_by
updated_by
created_at
updated_at
=== estimates ===
id (pk)
address
estimate_title
estimate_no
purchase_order_no
estimate_date
description
created_by
updated_by
created_at
updated_at
=== estimate_items ===
id (pk)
estimate_id (fk)
customer_id (fk)
product/service
unit_cost
quantity
apply_tax1
apply_tax2
discount
description
created_by
updated_by
created_at
updated_at
=== projects ===
id (pk)
customer_id (fk)
project_name
description
purchase_order_no
budget float
billing_method
flat_amount
created_by
updated_by
created_at
updated_at
=== tasks ====
id (pk)
task_name
description
billable
task_rate
start_date
end_date
estimated_hours
billing_method
flat_amount
created_by
updated_by
created_at
updated_at
To do all this in MySQL daabase I made this SQL query
-- phpMyAdmin SQL Dump
-- version 3.3.10deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `nt_invoice`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_customers`
--
CREATE TABLE IF NOT EXISTS `nt_customers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`owner_id` int(11) NOT NULL,
`business_email` varchar(80) NOT NULL DEFAULT '',
`business_name` varchar(80) NOT NULL DEFAULT '',
`customer_name` varchar(80) NOT NULL DEFAULT '',
`business_address` text,
`town/city` varchar(80) NOT NULL DEFAULT '',
`state/province` varchar(80) NOT NULL DEFAULT '',
`postalzip_code` varchar(25) NOT NULL DEFAULT '',
`country` varchar(80) NOT NULL DEFAULT '',
`phone` varchar(25) DEFAULT NULL,
`mob` varchar(25) DEFAULT NULL,
`fax` varchar(25) DEFAULT NULL,
`created_by` int(11) DEFAULT NULL,
`updated_by` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_customers`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_estimates`
--
CREATE TABLE IF NOT EXISTS `nt_estimates` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`customer_id` int(11) NOT NULL,
`owner_id` int(11) NOT NULL,
`address` text NOT NULL,
`estimate_title` varchar(80) NOT NULL,
`estimate_no` varchar(25) NOT NULL,
`purchase_order_no` varchar(25) NOT NULL,
`estimate_date` date NOT NULL,
`description` text NOT NULL,
`created_by` varchar(80) NOT NULL,
`updated_by` varchar(80) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `customer_id` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_estimates`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_estimate_items`
--
CREATE TABLE IF NOT EXISTS `nt_estimate_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`estimate_id` int(11) NOT NULL,
`owner_id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
`product/service` varchar(45) NOT NULL,
`unit_cost` varchar(45) NOT NULL,
`quantity` varchar(45) NOT NULL,
`apply_tax1` varchar(25) NOT NULL,
`apply_tax2` varchar(25) NOT NULL,
`discount` varchar(25) NOT NULL,
`description` text NOT NULL,
`created_by` varchar(80) NOT NULL,
`updated_by` varchar(80) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `estimate_id` (`estimate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_estimate_items`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_invoices`
--
CREATE TABLE IF NOT EXISTS `nt_invoices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`customer_id` int(11) NOT NULL,
`owner_id` int(11) NOT NULL,
`invoice_title` varchar(80) NOT NULL,
`invoice_issue_date` date NOT NULL,
`due_date` date NOT NULL,
`description` text NOT NULL,
`created_by` int(11) DEFAULT NULL,
`updated_by` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `customer_id` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_invoices`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_invoice_items`
--
CREATE TABLE IF NOT EXISTS `nt_invoice_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`invoice_id` int(11) NOT NULL,
`owner_id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
`product_name` varchar(45) NOT NULL,
`unit_cost` float DEFAULT NULL,
`quantity` int(11) NOT NULL,
`apply_tax1` float NOT NULL,
`apply_tax2` float NOT NULL,
`discount` float NOT NULL,
`description` text NOT NULL,
`created_by` int(11) DEFAULT NULL,
`updated_by` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `invoice_id` (`invoice_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_invoice_items`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_projects`
--
CREATE TABLE IF NOT EXISTS `nt_projects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`owner_id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
`project_name` varchar(100) NOT NULL,
`description` varchar(100) NOT NULL,
`purchase_order_no` varchar(80) NOT NULL,
`budget` float NOT NULL DEFAULT '0',
`billing_method` varchar(80) NOT NULL,
`flat_amount` float NOT NULL DEFAULT '0',
`created_by` varchar(80) NOT NULL,
`updated_by` varchar(80) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `customer_id` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_projects`
--
-- --------------------------------------------------------
--
-- Table structure for table `nt_tasks`
--
CREATE TABLE IF NOT EXISTS `nt_tasks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`owner_id` int(11) NOT NULL,
`task_name` varchar(100) NOT NULL,
`description` varchar(100) NOT NULL,
`billable` varchar(80) NOT NULL,
`task_rate` float NOT NULL DEFAULT '0',
`start_date` datetime NOT NULL,
`end_date` datetime NOT NULL,
`estimated_hours` varchar(25) NOT NULL,
`billing_method` varchar(80) NOT NULL,
`flat_amount` float NOT NULL DEFAULT '0',
`created_by` varchar(80) NOT NULL,
`updated_by` varchar(80) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `nt_tasks`
--
So I want to know is this the correct?I have the doubt in ForeignKeys(fk)
, are they properly defined in this query?please help me to do this as I am newbie to MySQL.Any help and suggestions are highly appreciable