SQL Operations Studio

While creating a personalised SQL Training course for one of my customers, I came across the new SQL Operations Studio from Microsoft. SQL Operations Studio is a cross platform SQL tool that is currently in Preview, version 0.23.6 I believe.

So far I have used it on both Windows 10 and Apple OSX Sierra and it has proven to be reasonably stable for such a young product and has great potential. I’m looking forward to seeing how it turns out when development is further along 🙂

SQL Operations Studio on Windows 10

SQL Operations Studio on Windows 10

SQL Operations Studio on Mac OSX

SQL Operations Studio on Mac OSX

Looking for an App creating for your Windows or Mac Computer? What about an App for your iOS or Android Tablet or Phone, or A Web App? Bespoke, Custom, High Quality Applications. Contact Me

New Improved chol.technology Homepage

This is our new homepage. Based on customer feedback I think it successfully now fulfills the following criteria:

  • Uncluttered
  • Explains What We Do
  • Explains Where We Are
  • Shows Images of Our Work
  • Promotes Social Sharing

I hope you like it 🙂

chol.technology home page

chol.technology Banner

Export data from your CRM with oneSql

I’ve uploaded another movie to our YouTube page today. This one shows an example of how to use oneSql to export contacts from your CRM system.

I have also been testing Mac OSX Yosemite Beta on one of my development computers. Here is a picture of oneSql running on Yosemite. Note the new native  control designs and colours. I think I like it 🙂

onesql yosemite beta sql query toolThat’s all for now 🙂

chol.technology Banner

The Best SQL Tool for Mac: Updated

oneSql 1.0.1 was released earlier today and I'm very pleased to say that there was not a single bug fix 🙂 Surely a testament to the guys and girls who participated in the Beta program earlier this year. So a very big 'thanks' to them 🙂

This update consists of a change to the way the SQL Keywords mechanism works. Previously the file SQLKeywords.sjc was loaded from the application folder or the SupportFiles folder and all the SQL keywords were loaded into an array and this array was accessed after each keystroke when typing occured in the SQL Text Area. If a match was found then the appropriate action was taken, ie: the word was capitalised, or coloured etc.

In version 1.0.1 the array of SQL keywords is built internally without reference to the SQLKeywords.sjc file. However if this file is present any words within this file are added to the SQL keywords array. So for example any words that you wish to be treated as keywords for your own purposes, or any keywords you find that I have missed when building the keyword array, can be added in a file called SQLKeywords.sjc which needs to be located in the same folder as the oneSql application or in the SupportFiles subfolder.

In addition to the changes described above there are half a dozen small interface tweaks which just tidy things up very slightly.

New CRM Software: Video Preview

A new video has just been uploaded to YouTube. This video demonstrates how simple and straightforward it is to insert and print a Sales Invoice using blackdogCRM, currently in Beta. (There is only so many hours in the day!) 🙂

chol.technology Banner

New Pinterest Account

We now have a Pinterest account. Still in it’s infancy and only a few dozen images so far, but if you want a peek, here it is:

Follow Steven’s board chol.technology on Pinterest.

 

busbannerAffiliate Links

 

Databasics: Primary Key

databasics

There is an ongoing debate among database ‘experts’ regarding the design of a Primary Key. A debate that in my opinion should have been done and dusted a long time ago.

Note: A Primary Key is a piece of data contained in a database Column that uniquely identifies the database Row. This is the same as how a National Insurance number uniquely identifies us to the authorities in the UK, or how a soldiers Service Number uniquely identifies then within the Military. If you need to View, Update or Delete an existing database record then it is essential that you can uniquely identify it.

 

Two Main Schools of Thought

The first says that the Primary Key should be a valid piece of information in it’s own right – not just an identifier. Like a name for example.  In the West we use a Surname which identifies us when amongst other people, most of which will hopefully have a different surname. In situations where that is not true, for example family gatherings, the first name can be used as well as a means of narrowing this down. It can be difficult to build up a unique piece of information using valid information.

The second school of thought acknowledges the problems of the above solution and solves these issues by allowing a non meaningful Unique Identifier whose sole purpose is to be able to identify uniquely within any amount of similar items. This is basically what we have with soldier Service Numbers and National Insurance numbers.

 

My Preference

My preference is with the second school of thought and in fact you can easily adopt this strategy with most Database Engines using the Auto Increment option on the Column. This lets the Database Engine itself take care of generating a Unique, Non Reuseable Identifier.

I always use the first Column of my Database Table as my Primary Key and name it: 

XXX_pk

The XXX depends on the Database Table in question. For example I might have a Table called: 

bas_con_main

for my Contacts. Each column will be prefixed with con. Therefore my Primary Key for this particular table will be:

con_pk

 

Consistency and Structure

All my Database designs use the same structure in order to build consistency, something which is not fully appreciated until you have to work with legacy databases which haven’t been built with consistency, structure or maintainability in mind.

Another example of consistency and structure; the second column of every Database Table I design is always XXX_updguid. 

This column contains another identifier, however this one changes with every edit or update of the database record. This is used so that I can find out if the data I am viewing on my screen has actually since been updated elsewhere by someone else. A comparison between the value of the updguid I have in memory and the value of the one stored in the database is all that is needed to determine the validity of the information I am viewing. If the information is stale I have several options I can pursue. This all is part of my Record Locking strategy, covered in another Databasics article soon 🙂

 

Any questions, comments or thoughts to blog@zombielabs.net

___________________________________

© Steven Cholerton 2013

www.stevencholerton.com

___________________________________

Version 1.0.0 – 2nd December 2013